ember-source 6.12.0-beta.3 → 7.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blueprints/initializer-test/files/__root__/__testType__/__path__/__name__-test.ts +2 -2
- package/blueprints/instance-initializer-test/files/__root__/__testType__/__path__/__name__-test.ts +3 -3
- package/build-metadata.json +3 -3
- package/dist/{packages/shared-chunks/registry-XY5cfmbH.js → dev/packages/@ember/-internals/container/index.js} +28 -27
- package/dist/{packages → dev/packages}/@ember/-internals/deprecations/index.js +5 -16
- package/dist/{packages/shared-chunks/env-DEd6hPbj.js → dev/packages/@ember/-internals/environment/index.js} +31 -53
- package/dist/dev/packages/@ember/-internals/glimmer/index.js +42 -0
- package/dist/{packages → dev/packages}/@ember/-internals/meta/lib/meta.js +37 -38
- package/dist/dev/packages/@ember/-internals/metal/index.js +63 -0
- package/dist/{packages → dev/packages}/@ember/-internals/routing/index.js +7 -8
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/ext/rsvp.js +1 -2
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/-proxy.js +14 -15
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/action_handler.js +21 -9
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/registry_proxy.js +11 -2
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/target_action_support.js +22 -9
- package/dist/{packages → dev/packages}/@ember/-internals/string/index.js +1 -2
- package/dist/dev/packages/@ember/-internals/utils/index.js +34 -0
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/compat/fallback-view-registry.js +1 -2
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/mixins/action_support.js +16 -10
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/system/event_dispatcher.js +19 -20
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/system/utils.js +7 -23
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/views/core_view.js +6 -7
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/views/states.js +3 -4
- package/dist/{packages → dev/packages}/@ember/application/index.js +50 -121
- package/dist/{packages → dev/packages}/@ember/application/instance.js +17 -17
- package/dist/{packages → dev/packages}/@ember/application/namespace.js +27 -9
- package/dist/{packages → dev/packages}/@ember/array/index.js +34 -25
- package/dist/{packages → dev/packages}/@ember/array/proxy.js +19 -20
- package/dist/{packages → dev/packages}/@ember/canary-features/index.js +1 -1
- package/dist/dev/packages/@ember/component/helper.js +14 -0
- package/dist/{packages → dev/packages}/@ember/component/index.js +12 -12
- package/dist/{packages → dev/packages}/@ember/component/template-only.js +6 -6
- package/dist/{packages → dev/packages}/@ember/controller/index.js +7 -9
- package/dist/{packages → dev/packages}/@ember/debug/container-debug-adapter.js +6 -7
- package/dist/{packages → dev/packages}/@ember/debug/data-adapter.js +6 -7
- package/dist/{packages → dev/packages}/@ember/debug/index.js +4 -11
- package/dist/{packages → dev/packages}/@ember/debug/lib/assert.js +1 -3
- package/dist/{packages → dev/packages}/@ember/debug/lib/deprecate.js +7 -3
- package/dist/{packages → dev/packages}/@ember/debug/lib/handlers.js +1 -3
- package/dist/{packages → dev/packages}/@ember/debug/lib/warn.js +1 -2
- package/dist/{packages → dev/packages}/@ember/engine/index.js +22 -22
- package/dist/dev/packages/@ember/engine/instance.js +200 -0
- package/dist/{packages → dev/packages}/@ember/helper/index.js +12 -11
- package/dist/{packages → dev/packages}/@ember/instrumentation/index.js +3 -8
- package/dist/dev/packages/@ember/modifier/index.js +23 -0
- package/dist/{packages → dev/packages}/@ember/modifier/on.js +6 -6
- package/dist/dev/packages/@ember/object/-internals.js +49 -0
- package/dist/{packages → dev/packages}/@ember/object/compat.js +11 -12
- package/dist/{packages → dev/packages}/@ember/object/computed.js +7 -8
- package/dist/{packages → dev/packages}/@ember/object/core.js +28 -29
- package/dist/{packages → dev/packages}/@ember/object/evented.js +7 -8
- package/dist/dev/packages/@ember/object/events.js +11 -0
- package/dist/{packages → dev/packages}/@ember/object/index.js +18 -19
- package/dist/{packages → dev/packages}/@ember/object/internals.js +1 -1
- package/dist/{packages → dev/packages}/@ember/object/lib/computed/computed_macros.js +30 -27
- package/dist/{packages → dev/packages}/@ember/object/lib/computed/reduce_computed_macros.js +36 -37
- package/dist/{packages → dev/packages}/@ember/object/mixin.js +15 -23
- package/dist/dev/packages/@ember/object/observable.js +181 -0
- package/dist/dev/packages/@ember/object/observers.js +11 -0
- package/dist/{packages → dev/packages}/@ember/object/promise-proxy-mixin.js +7 -8
- package/dist/dev/packages/@ember/renderer/index.js +14 -0
- package/dist/dev/packages/@ember/routing/-internals.js +22 -0
- package/dist/{packages → dev/packages}/@ember/routing/hash-location.js +1 -1
- package/dist/{packages → dev/packages}/@ember/routing/history-location.js +9 -25
- package/dist/dev/packages/@ember/routing/index.js +14 -0
- package/dist/{packages → dev/packages}/@ember/routing/lib/dsl.js +5 -6
- package/dist/{packages → dev/packages}/@ember/routing/lib/generate_controller.js +22 -10
- package/dist/{packages → dev/packages}/@ember/routing/lib/location-utils.js +3 -16
- package/dist/{packages → dev/packages}/@ember/routing/lib/routing-service.js +19 -9
- package/dist/{packages → dev/packages}/@ember/routing/lib/utils.js +12 -13
- package/dist/{packages → dev/packages}/@ember/routing/none-location.js +2 -4
- package/dist/{packages → dev/packages}/@ember/routing/route.js +38 -39
- package/dist/{packages → dev/packages}/@ember/routing/router-service.js +13 -14
- package/dist/{packages → dev/packages}/@ember/routing/router.js +63 -71
- package/dist/{packages → dev/packages}/@ember/runloop/index.js +9 -8
- package/dist/{packages → dev/packages}/@ember/service/index.js +6 -7
- package/dist/dev/packages/@ember/template/index.js +14 -0
- package/dist/{packages → dev/packages}/@ember/template-compilation/index.js +3 -3
- package/dist/dev/packages/@ember/template-compiler/index.js +2 -0
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/compile-options.js +11 -6
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/dasherize-component-name.js +1 -2
- package/dist/dev/packages/@ember/template-compiler/lib/plugins/allowed-globals.js +56 -0
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-against-attrs.js +19 -3
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-against-named-outlets.js +11 -2
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.js +1 -2
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.js +3 -4
- package/dist/dev/packages/@ember/template-compiler/lib/plugins/index.js +40 -0
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-each-track-array.js +21 -2
- package/dist/dev/packages/@ember/template-compiler/lib/plugins/transform-in-element.js +50 -0
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-resolutions.js +2 -3
- package/dist/dev/packages/@ember/template-compiler/lib/template.js +248 -0
- package/dist/dev/packages/@ember/template-factory/index.js +8 -0
- package/dist/dev/packages/@ember/test/index.js +18 -0
- package/dist/{packages → dev/packages}/@ember/utils/lib/compare.js +5 -6
- package/dist/{packages → dev/packages}/@ember/utils/lib/is_empty.js +6 -7
- package/dist/{packages → dev/packages}/@glimmer/destroyable/index.js +21 -16
- package/dist/{packages/shared-chunks/encoder-CT1wqYMF.js → dev/packages/@glimmer/encoder/index.js} +3 -4
- package/dist/{packages → dev/packages}/@glimmer/global-context/index.js +6 -5
- package/dist/{packages/shared-chunks/api-1B_9SjFR.js → dev/packages/@glimmer/manager/index.js} +17 -14
- package/dist/dev/packages/@glimmer/node/index.js +40 -0
- package/dist/{packages → dev/packages}/@glimmer/opcode-compiler/index.js +5 -6
- package/dist/dev/packages/@glimmer/program/index.js +12 -0
- package/dist/dev/packages/@glimmer/reference/index.js +208 -0
- package/dist/dev/packages/@glimmer/runtime/index.js +11 -0
- package/dist/dev/packages/@glimmer/tracking/index.js +137 -0
- package/dist/dev/packages/@glimmer/tracking/primitives/cache/index.js +11 -0
- package/dist/{packages → dev/packages}/@glimmer/util/index.js +2 -3
- package/dist/{packages → dev/packages}/@glimmer/validator/index.js +304 -372
- package/dist/{packages → dev/packages}/@glimmer/vm/index.js +1 -1
- package/dist/{packages → dev/packages}/ember/version.js +2 -2
- package/dist/dev/packages/ember-template-compiler/index.js +109 -0
- package/dist/{packages → dev/packages}/ember-testing/index.js +1 -3
- package/dist/dev/packages/ember-testing/lib/public-api.js +2 -0
- package/dist/dev/packages/ember-testing/lib/test/pending_requests.js +10 -0
- package/dist/dev/packages/ember-testing/lib/test.js +25 -0
- package/dist/{packages/shared-chunks/router-DSi8WnDi.js → dev/packages/router_js/index.js} +120 -58
- package/dist/{packages/shared-chunks/alias-BEMS3qgG.js → dev/packages/shared-chunks/alias-CSC0WIbj.js} +4 -5
- package/dist/{packages/shared-chunks/api-CkUl6KyJ.js → dev/packages/shared-chunks/api-BqXkkT0p.js} +14 -16
- package/dist/{packages/shared-chunks/args-proxy-B91L3LRK.js → dev/packages/shared-chunks/args-proxy-DgXMc9b5.js} +7 -8
- package/dist/{packages/shared-chunks/array-BqYCCatg.js → dev/packages/shared-chunks/array-D8PfjQHi.js} +3 -4
- package/dist/dev/packages/shared-chunks/capabilities-O_xc7Yqk.js +34 -0
- package/dist/{packages/shared-chunks/collections-B8me-ZlQ.js → dev/packages/shared-chunks/collections-D_nY_0UJ.js} +1 -2
- package/dist/{packages/@ember/template-compiler/lib/template.js → dev/packages/shared-chunks/compiler-CNj62pww.js} +22 -243
- package/dist/{packages/shared-chunks/constants-oDhF27qL.js → dev/packages/shared-chunks/constants-eoaL3OJQ.js} +9 -9
- package/dist/{packages/shared-chunks/debug-to-string-BsFOvUtQ.js → dev/packages/shared-chunks/debug-to-string-CFb7h0lY.js} +1 -3
- package/dist/{packages/shared-chunks/dynamic-CuBsUXX8.js → dev/packages/shared-chunks/dynamic-CFg3dljk.js} +108 -134
- package/dist/{packages/shared-chunks/element-builder-BuVym8EM.js → dev/packages/shared-chunks/element-builder-BOxP8emt.js} +4 -5
- package/dist/{packages/shared-chunks/flags-BsZlvEeR.js → dev/packages/shared-chunks/flags-B9qxc-pB.js} +1 -1
- package/dist/{packages/shared-chunks/capabilities-DHiXCCuB.js → dev/packages/shared-chunks/fragment-Cc5k9Oy4.js} +2 -33
- package/dist/{packages/shared-chunks/index-ByyoGpfz.js → dev/packages/shared-chunks/index-PxU6E7q8.js} +658 -214
- package/dist/{packages/shared-chunks/index-CQkjwqTv.js → dev/packages/shared-chunks/index-Q7JnrdBn.js} +20 -19
- package/dist/dev/packages/shared-chunks/invoke-DxRPE05O.js +67 -0
- package/dist/{packages/shared-chunks/is_proxy-C2q5rUMp.js → dev/packages/shared-chunks/is_proxy-B0smdQy8.js} +1 -1
- package/dist/{packages/shared-chunks/mandatory-setter-DLKyVs4Q.js → dev/packages/shared-chunks/mandatory-setter-DHZe7-kW.js} +47 -48
- package/dist/{packages/shared-chunks/name-DVtQREj6.js → dev/packages/shared-chunks/name-Z7dpqvzn.js} +1 -1
- package/dist/{packages/shared-chunks/namespace_search-ClQOZuFA.js → dev/packages/shared-chunks/namespace_search-uT8odThF.js} +3 -4
- package/dist/{packages/shared-chunks/observers-DhgQ6ba5.js → dev/packages/shared-chunks/observers-Bj9qLVau.js} +231 -87
- package/dist/{packages/shared-chunks/program-CcLlGnAU.js → dev/packages/shared-chunks/program-DfV0v8aa.js} +4 -6
- package/dist/{packages/shared-chunks/program-context-CZJnCFdo.js → dev/packages/shared-chunks/program-context-BRjCC_BA.js} +2 -2
- package/dist/{packages/shared-chunks/property_set-DrZnfGQ7.js → dev/packages/shared-chunks/property_set-DaoZXGM5.js} +11 -16
- package/dist/dev/packages/shared-chunks/public-api-C3KlJmEr.js +10 -0
- package/dist/{packages/shared-chunks/reference-B6HMX4y0.js → dev/packages/shared-chunks/reference-C3TKDRnP.js} +11 -12
- package/dist/{packages/@glimmer/runtime/index.js → dev/packages/shared-chunks/rehydrate-builder-DPImr9e9.js} +8 -16
- package/dist/{packages/shared-chunks/render-DTOhhssy.js → dev/packages/shared-chunks/render-sg8BuFaE.js} +16 -23
- package/dist/{packages/shared-chunks/serialize-builder-DEgRJgNQ.js → dev/packages/shared-chunks/serialize-builder-b_gSYCSS.js} +7 -7
- package/dist/{packages/shared-chunks/set_properties-Dag9Xz6u.js → dev/packages/shared-chunks/set_properties-kVGzZL_a.js} +2 -2
- package/dist/{packages/shared-chunks/setup-registry-Bbj8WQen.js → dev/packages/shared-chunks/setup-registry-DGdDOxrk.js} +12 -12
- package/dist/{packages/shared-chunks/simple-cast-BXTrayoV.js → dev/packages/shared-chunks/simple-cast-DCvJLSin.js} +1 -1
- package/dist/{packages/shared-chunks/template-CMHIG4cn.js → dev/packages/shared-chunks/template-kM-7TTcc.js} +3 -4
- package/dist/dev/packages/shared-chunks/to-string-C7M8LBLH.js +36 -0
- package/dist/{packages/shared-chunks/transform-resolutions-vHYYonpB.js → dev/packages/shared-chunks/transform-resolutions-fXGQKGsL.js} +331 -288
- package/dist/{packages/shared-chunks/unrecognized-url-error-BBMMZhBN.js → dev/packages/shared-chunks/unrecognized-url-error-B3wUTorp.js} +103 -39
- package/dist/prod/packages/@ember/-internals/browser-environment/index.js +2 -0
- package/dist/prod/packages/@ember/-internals/container/index.js +697 -0
- package/dist/prod/packages/@ember/-internals/deprecations/index.js +114 -0
- package/dist/prod/packages/@ember/-internals/environment/index.js +171 -0
- package/dist/prod/packages/@ember/-internals/error-handling/index.js +26 -0
- package/dist/prod/packages/@ember/-internals/glimmer/index.js +39 -0
- package/dist/prod/packages/@ember/-internals/meta/index.js +1 -0
- package/dist/prod/packages/@ember/-internals/meta/lib/meta.js +455 -0
- package/dist/prod/packages/@ember/-internals/metal/index.js +61 -0
- package/dist/prod/packages/@ember/-internals/owner/index.js +252 -0
- package/dist/prod/packages/@ember/-internals/routing/index.js +14 -0
- package/dist/prod/packages/@ember/-internals/runtime/index.js +9 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/ext/rsvp.js +51 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +89 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +187 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/comparable.js +37 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/container_proxy.js +44 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/registry_proxy.js +42 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +142 -0
- package/dist/prod/packages/@ember/-internals/string/index.js +93 -0
- package/dist/prod/packages/@ember/-internals/utility-types/index.js +12 -0
- package/dist/prod/packages/@ember/-internals/utils/index.js +75 -0
- package/dist/prod/packages/@ember/-internals/views/index.js +7 -0
- package/dist/prod/packages/@ember/-internals/views/lib/compat/attrs.js +3 -0
- package/dist/prod/packages/@ember/-internals/views/lib/compat/fallback-view-registry.js +7 -0
- package/dist/prod/packages/@ember/-internals/views/lib/component_lookup.js +14 -0
- package/dist/prod/packages/@ember/-internals/views/lib/mixins/action_support.js +35 -0
- package/dist/prod/packages/@ember/-internals/views/lib/system/event_dispatcher.js +227 -0
- package/dist/prod/packages/@ember/-internals/views/lib/system/utils.js +172 -0
- package/dist/prod/packages/@ember/-internals/views/lib/views/core_view.js +87 -0
- package/dist/prod/packages/@ember/-internals/views/lib/views/states.js +83 -0
- package/dist/prod/packages/@ember/application/index.js +899 -0
- package/dist/prod/packages/@ember/application/instance.js +438 -0
- package/dist/prod/packages/@ember/application/namespace.js +68 -0
- package/dist/prod/packages/@ember/array/-internals.js +9 -0
- package/dist/prod/packages/@ember/array/index.js +591 -0
- package/dist/prod/packages/@ember/array/lib/make-array.js +42 -0
- package/dist/prod/packages/@ember/array/make.js +1 -0
- package/dist/prod/packages/@ember/array/mutable.js +1 -0
- package/dist/prod/packages/@ember/array/proxy.js +267 -0
- package/dist/prod/packages/@ember/canary-features/index.js +67 -0
- package/dist/prod/packages/@ember/component/helper.js +12 -0
- package/dist/prod/packages/@ember/component/index.js +32 -0
- package/dist/prod/packages/@ember/component/template-only.js +39 -0
- package/dist/prod/packages/@ember/controller/index.js +177 -0
- package/dist/prod/packages/@ember/debug/container-debug-adapter.js +117 -0
- package/dist/prod/packages/@ember/debug/data-adapter.js +553 -0
- package/dist/prod/packages/@ember/debug/index.js +30 -0
- package/dist/prod/packages/@ember/debug/lib/assert.js +7 -0
- package/dist/prod/packages/@ember/debug/lib/capture-render-tree.js +28 -0
- package/dist/prod/packages/@ember/debug/lib/deprecate.js +56 -0
- package/dist/prod/packages/@ember/debug/lib/handlers.js +5 -0
- package/dist/prod/packages/@ember/debug/lib/inspect.js +120 -0
- package/dist/prod/packages/@ember/debug/lib/testing.js +9 -0
- package/dist/prod/packages/@ember/debug/lib/warn.js +6 -0
- package/dist/prod/packages/@ember/deprecated-features/index.js +7 -0
- package/dist/prod/packages/@ember/destroyable/index.js +251 -0
- package/dist/prod/packages/@ember/engine/index.js +450 -0
- package/dist/{packages → prod/packages}/@ember/engine/instance.js +24 -10
- package/dist/prod/packages/@ember/engine/lib/engine-parent.js +33 -0
- package/dist/prod/packages/@ember/engine/parent.js +1 -0
- package/dist/prod/packages/@ember/enumerable/index.js +20 -0
- package/dist/prod/packages/@ember/enumerable/mutable.js +22 -0
- package/dist/prod/packages/@ember/helper/index.js +489 -0
- package/dist/prod/packages/@ember/instrumentation/index.js +242 -0
- package/dist/prod/packages/@ember/modifier/index.js +21 -0
- package/dist/prod/packages/@ember/modifier/on.js +20 -0
- package/dist/prod/packages/@ember/object/-internals.js +28 -0
- package/dist/prod/packages/@ember/object/compat.js +128 -0
- package/dist/prod/packages/@ember/object/computed.js +10 -0
- package/dist/prod/packages/@ember/object/core.js +781 -0
- package/dist/prod/packages/@ember/object/evented.js +76 -0
- package/dist/prod/packages/@ember/object/events.js +6 -0
- package/dist/prod/packages/@ember/object/index.js +205 -0
- package/dist/prod/packages/@ember/object/internals.js +8 -0
- package/dist/prod/packages/@ember/object/lib/computed/computed_macros.js +776 -0
- package/dist/prod/packages/@ember/object/lib/computed/reduce_computed_macros.js +1032 -0
- package/dist/prod/packages/@ember/object/mixin.js +560 -0
- package/dist/{packages → prod/packages}/@ember/object/observable.js +80 -15
- package/dist/prod/packages/@ember/object/observers.js +6 -0
- package/dist/prod/packages/@ember/object/promise-proxy-mixin.js +138 -0
- package/dist/prod/packages/@ember/object/proxy.js +98 -0
- package/dist/prod/packages/@ember/owner/index.js +88 -0
- package/dist/prod/packages/@ember/reactive/collections.js +1 -0
- package/dist/prod/packages/@ember/reactive/index.js +12 -0
- package/dist/prod/packages/@ember/renderer/index.js +12 -0
- package/dist/prod/packages/@ember/routing/hash-location.js +153 -0
- package/dist/prod/packages/@ember/routing/history-location.js +250 -0
- package/dist/prod/packages/@ember/routing/index.js +12 -0
- package/dist/prod/packages/@ember/routing/lib/cache.js +37 -0
- package/dist/prod/packages/@ember/routing/lib/controller_for.js +16 -0
- package/dist/prod/packages/@ember/routing/lib/dsl.js +178 -0
- package/dist/prod/packages/@ember/routing/lib/generate_controller.js +62 -0
- package/dist/prod/packages/@ember/routing/lib/location-utils.js +48 -0
- package/dist/prod/packages/@ember/routing/lib/query_params.js +9 -0
- package/dist/prod/packages/@ember/routing/lib/router_state.js +26 -0
- package/dist/prod/packages/@ember/routing/lib/routing-service.js +125 -0
- package/dist/prod/packages/@ember/routing/lib/utils.js +236 -0
- package/dist/prod/packages/@ember/routing/none-location.js +120 -0
- package/dist/prod/packages/@ember/routing/route.js +1604 -0
- package/dist/prod/packages/@ember/routing/router-service.js +640 -0
- package/dist/prod/packages/@ember/routing/router.js +1335 -0
- package/dist/prod/packages/@ember/runloop/index.js +736 -0
- package/dist/prod/packages/@ember/service/index.js +124 -0
- package/dist/prod/packages/@ember/template/index.js +12 -0
- package/dist/prod/packages/@ember/template-compilation/index.js +20 -0
- package/dist/prod/packages/@ember/template-compiler/-internal-primitives.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/-internal-utils.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/index.js +2 -0
- package/dist/prod/packages/@ember/template-compiler/lib/-internal/primitives.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/lib/compile-options.js +103 -0
- package/dist/prod/packages/@ember/template-compiler/lib/dasherize-component-name.js +21 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/allowed-globals.js +56 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-against-attrs.js +49 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-against-named-outlets.js +34 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.js +22 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.js +37 -0
- package/dist/{packages → prod/packages}/@ember/template-compiler/lib/plugins/index.js +1 -1
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-action-syntax.js +65 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-each-in-into-each.js +51 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-each-track-array.js +50 -0
- package/dist/{packages → prod/packages}/@ember/template-compiler/lib/plugins/transform-in-element.js +20 -6
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js +37 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-resolutions.js +4 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-wrap-mount-and-outlet.js +57 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/utils.js +55 -0
- package/dist/prod/packages/@ember/template-compiler/lib/public-api.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/lib/runtime.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/lib/system/calculate-location-display.js +28 -0
- package/dist/prod/packages/@ember/template-compiler/lib/template.js +245 -0
- package/dist/prod/packages/@ember/template-factory/index.js +5 -0
- package/dist/prod/packages/@ember/test/adapter.js +2 -0
- package/dist/prod/packages/@ember/test/index.js +18 -0
- package/dist/prod/packages/@ember/utils/index.js +7 -0
- package/dist/prod/packages/@ember/utils/lib/compare.js +159 -0
- package/dist/prod/packages/@ember/utils/lib/is-equal.js +60 -0
- package/dist/prod/packages/@ember/utils/lib/is_blank.js +36 -0
- package/dist/prod/packages/@ember/utils/lib/is_empty.js +67 -0
- package/dist/prod/packages/@ember/utils/lib/is_none.js +28 -0
- package/dist/prod/packages/@ember/utils/lib/is_present.js +39 -0
- package/dist/prod/packages/@ember/utils/lib/type-of.js +110 -0
- package/dist/prod/packages/@ember/version/index.js +1 -0
- package/dist/prod/packages/@glimmer/destroyable/index.js +128 -0
- package/dist/prod/packages/@glimmer/encoder/index.js +28 -0
- package/dist/prod/packages/@glimmer/env/index.js +4 -0
- package/dist/prod/packages/@glimmer/global-context/index.js +138 -0
- package/dist/prod/packages/@glimmer/manager/index.js +293 -0
- package/dist/{packages/shared-chunks/node-dom-helper-BYL7Plyj.js → prod/packages/@glimmer/node/index.js} +10 -12
- package/dist/prod/packages/@glimmer/opcode-compiler/index.js +40 -0
- package/dist/prod/packages/@glimmer/owner/index.js +19 -0
- package/dist/prod/packages/@glimmer/program/index.js +12 -0
- package/dist/{packages/shared-chunks/iterable-BKS7az3P.js → prod/packages/@glimmer/reference/index.js} +13 -12
- package/dist/prod/packages/@glimmer/runtime/index.js +9 -0
- package/dist/prod/packages/@glimmer/tracking/index.js +115 -0
- package/dist/prod/packages/@glimmer/tracking/primitives/cache/index.js +6 -0
- package/dist/prod/packages/@glimmer/util/index.js +129 -0
- package/dist/prod/packages/@glimmer/validator/index.js +1027 -0
- package/dist/prod/packages/@glimmer/vm/index.js +15 -0
- package/dist/prod/packages/@glimmer/wire-format/index.js +102 -0
- package/dist/prod/packages/@simple-dom/document/index.js +355 -0
- package/dist/prod/packages/backburner.js/index.js +939 -0
- package/dist/prod/packages/dag-map/index.js +202 -0
- package/dist/prod/packages/ember/version.js +4 -0
- package/dist/prod/packages/ember-template-compiler/index.js +100 -0
- package/dist/prod/packages/ember-testing/index.js +6 -0
- package/dist/prod/packages/ember-testing/lib/adapters/adapter.js +49 -0
- package/dist/prod/packages/ember-testing/lib/public-api.js +2 -0
- package/dist/prod/packages/ember-testing/lib/test/adapter.js +32 -0
- package/dist/prod/packages/ember-testing/lib/test/pending_requests.js +10 -0
- package/dist/prod/packages/ember-testing/lib/test/waiters.js +128 -0
- package/dist/prod/packages/ember-testing/lib/test.js +25 -0
- package/dist/prod/packages/route-recognizer/index.js +671 -0
- package/dist/prod/packages/router_js/index.js +1527 -0
- package/dist/prod/packages/rsvp/index.js +1 -0
- package/dist/prod/packages/shared-chunks/alias-BkT-0B1G.js +81 -0
- package/dist/prod/packages/shared-chunks/api-Co-k4HVs.js +200 -0
- package/dist/prod/packages/shared-chunks/args-proxy-Dl0A0YWI.js +131 -0
- package/dist/prod/packages/shared-chunks/array-EwekEvId.js +117 -0
- package/dist/prod/packages/shared-chunks/array-utils-CZQxrdD3.js +45 -0
- package/dist/prod/packages/shared-chunks/assert-CUCJBR2C.js +19 -0
- package/dist/prod/packages/shared-chunks/cache-qDyqAcpg.js +35 -0
- package/dist/prod/packages/shared-chunks/capabilities-DGmQ_mz4.js +26 -0
- package/dist/prod/packages/shared-chunks/chunk-3SQBS3Y5-Cj4eryg1.js +121 -0
- package/dist/prod/packages/shared-chunks/collections-GpG8lT2g.js +75 -0
- package/dist/prod/packages/shared-chunks/compiler-Ddfo5StE.js +6806 -0
- package/dist/prod/packages/shared-chunks/computed_cache-DmYKevAP.js +12 -0
- package/dist/prod/packages/shared-chunks/constants-b-2IVErl.js +210 -0
- package/dist/prod/packages/shared-chunks/debug-brand-B1TWjOCH.js +12 -0
- package/dist/prod/packages/shared-chunks/decorator-BdDDBUd2.js +123 -0
- package/dist/prod/packages/shared-chunks/dictionary-gc5gpyOG.js +13 -0
- package/dist/prod/packages/shared-chunks/element-builder-CiLTrXD6.js +776 -0
- package/dist/prod/packages/shared-chunks/flags-B9qxc-pB.js +24 -0
- package/dist/prod/packages/shared-chunks/fragment-EpVz5Xuc.js +910 -0
- package/dist/prod/packages/shared-chunks/get-debug-name-BDxIL2Y1.js +3 -0
- package/dist/prod/packages/shared-chunks/has-dom-DdQORPzI.js +4 -0
- package/dist/prod/packages/shared-chunks/index-CSVCFS_p.js +1904 -0
- package/dist/prod/packages/shared-chunks/index-Cc8WmrB-.js +21 -0
- package/dist/prod/packages/shared-chunks/index-DZLHQAlb.js +5842 -0
- package/dist/prod/packages/shared-chunks/injected_property-DL3vQoFA.js +58 -0
- package/dist/prod/packages/shared-chunks/invoke-DxL00a1D.js +53 -0
- package/dist/prod/packages/shared-chunks/is_proxy-Cr1qlMv_.js +16 -0
- package/dist/prod/packages/shared-chunks/lookup-descriptor-CwcVgaLv.js +13 -0
- package/dist/prod/packages/shared-chunks/name-C68GLLO3.js +11 -0
- package/dist/prod/packages/shared-chunks/namespace_search-Aog9nySA.js +1070 -0
- package/dist/prod/packages/shared-chunks/object-utils-AijlD-JH.js +12 -0
- package/dist/prod/packages/shared-chunks/observers-R1ZklwWy.js +714 -0
- package/dist/prod/packages/shared-chunks/on-CrTl7JQU.js +3329 -0
- package/dist/prod/packages/shared-chunks/program-B7SJZ5NF.js +176 -0
- package/dist/prod/packages/shared-chunks/program-context-C-JdYXRA.js +146 -0
- package/dist/prod/packages/shared-chunks/property_set-O080KTKZ.js +99 -0
- package/dist/prod/packages/shared-chunks/public-api-C3KlJmEr.js +10 -0
- package/dist/prod/packages/shared-chunks/reference-BNqcwZWH.js +151 -0
- package/dist/prod/packages/shared-chunks/registers-ylirb0dq.js +35 -0
- package/dist/prod/packages/shared-chunks/rehydrate-builder-CSn1aIO1.js +459 -0
- package/dist/prod/packages/shared-chunks/render-C1ZnScKH.js +1464 -0
- package/dist/prod/packages/shared-chunks/rsvp-CnCSY930.js +2306 -0
- package/dist/prod/packages/shared-chunks/serialize-builder-CVQ3q8rJ.js +124 -0
- package/dist/prod/packages/shared-chunks/set_properties-CjsDTRey.js +101 -0
- package/dist/prod/packages/shared-chunks/setup-registry-CMNYh2jY.js +53 -0
- package/dist/prod/packages/shared-chunks/simple-cast-DCvJLSin.js +33 -0
- package/dist/prod/packages/shared-chunks/super-Cm_a_cLQ.js +275 -0
- package/dist/prod/packages/shared-chunks/template-Dc_cBOoX.js +19 -0
- package/dist/prod/packages/shared-chunks/tracked-ChVNBE2f.js +131 -0
- package/dist/prod/packages/shared-chunks/transform-resolutions-C7wq_Q_c.js +6939 -0
- package/dist/prod/packages/shared-chunks/unrecognized-url-error-DDBwfzdm.js +537 -0
- package/docs/data.json +3009 -2358
- package/lib/index.js +157 -279
- package/package.json +27 -58
- package/types/stable/@ember/-internals/deprecations/index.d.ts +0 -6
- package/types/stable/@ember/-internals/environment/index.d.ts +0 -1
- package/types/stable/@ember/-internals/environment/lib/env.d.ts +0 -3
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly.d.ts +3 -6
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/root.d.ts +1 -2
- package/types/stable/@ember/-internals/glimmer/lib/helper.d.ts +22 -29
- package/types/stable/@ember/-internals/glimmer/lib/renderer.d.ts +2 -2
- package/types/stable/@ember/-internals/glimmer/lib/resolver.d.ts +0 -2
- package/types/stable/@ember/-internals/glimmer/lib/utils/bindings.d.ts +0 -1
- package/types/stable/@ember/-internals/meta/lib/meta.d.ts +1 -1
- package/types/stable/@ember/-internals/metal/lib/alias.d.ts +0 -11
- package/types/stable/@ember/-internals/metal/lib/decorator.d.ts +0 -1
- package/types/stable/@ember/-internals/metal/lib/each_proxy_events.d.ts +0 -1
- package/types/stable/@ember/-internals/metal/lib/observer.d.ts +0 -2
- package/types/stable/@ember/-internals/metal/lib/property_get.d.ts +4 -10
- package/types/stable/@ember/-internals/utils/index.d.ts +0 -1
- package/types/stable/@ember/-internals/views/lib/system/utils.d.ts +3 -15
- package/types/stable/@ember/application/index.d.ts +2 -63
- package/types/stable/@ember/routing/history-location.d.ts +0 -1
- package/types/stable/@ember/routing/lib/location-utils.d.ts +1 -2
- package/types/stable/@ember/routing/none-location.d.ts +1 -2
- package/types/stable/@ember/template-compiler/index.d.ts +1 -0
- package/types/stable/@ember/template-compiler/lib/plugins/allowed-globals.d.ts +26 -0
- package/types/stable/@ember/test/index.d.ts +0 -3
- package/types/stable/@glimmer/interfaces/lib/compile/wire-format/api.d.ts +1 -1
- package/types/stable/@glimmer/interfaces/lib/template.d.ts +1 -1
- package/types/stable/@glimmer/program/lib/program.d.ts +0 -1
- package/types/stable/@glimmer/validator/lib/collections/map.d.ts +1 -1
- package/types/stable/@handlebars/parser/types/ast.d.ts +148 -0
- package/types/stable/@handlebars/parser/types/index.d.ts +13 -0
- package/types/stable/ember-template-compiler/index.d.ts +0 -2
- package/types/stable/ember-template-compiler/lib/public-api.d.ts +0 -1
- package/types/stable/ember-testing/lib/public-api.d.ts +0 -6
- package/types/stable/ember-testing/lib/test/pending_requests.d.ts +0 -3
- package/types/stable/ember-testing/lib/test.d.ts +0 -23
- package/types/stable/index.d.ts +15 -32
- package/types/stable/router_js/index.d.ts +7 -0
- package/types/stable/router_js/lib/core.d.ts +9 -0
- package/types/stable/router_js/lib/route-info.d.ts +107 -0
- package/types/stable/router_js/lib/router.d.ts +245 -0
- package/types/stable/router_js/lib/transition-aborted-error.d.ts +15 -0
- package/types/stable/router_js/lib/transition-intent/named-transition-intent.d.ts +23 -0
- package/types/stable/router_js/lib/transition-intent/url-transition-intent.d.ts +12 -0
- package/types/stable/router_js/lib/transition-intent.d.ts +13 -0
- package/types/stable/router_js/lib/transition-state.d.ts +25 -0
- package/types/stable/router_js/lib/transition.d.ts +241 -0
- package/types/stable/router_js/lib/unrecognized-url-error.d.ts +11 -0
- package/types/stable/router_js/lib/utils.d.ts +41 -0
- package/dist/ember-template-compiler.js +0 -20631
- package/dist/ember-template-compiler.js.map +0 -1
- package/dist/ember-testing.js +0 -1351
- package/dist/ember-testing.js.map +0 -1
- package/dist/ember.debug.js +0 -52306
- package/dist/ember.debug.js.map +0 -1
- package/dist/ember.prod.js +0 -49369
- package/dist/ember.prod.js.map +0 -1
- package/dist/packages/@ember/-internals/container/index.js +0 -1
- package/dist/packages/@ember/-internals/environment/index.js +0 -1
- package/dist/packages/@ember/-internals/glimmer/index.js +0 -18
- package/dist/packages/@ember/-internals/metal/index.js +0 -51
- package/dist/packages/@ember/-internals/utils/index.js +0 -7
- package/dist/packages/@ember/application/lib/lazy_load.js +0 -68
- package/dist/packages/@ember/component/helper.js +0 -14
- package/dist/packages/@ember/modifier/index.js +0 -23
- package/dist/packages/@ember/object/-internals.js +0 -35
- package/dist/packages/@ember/object/events.js +0 -12
- package/dist/packages/@ember/object/observers.js +0 -12
- package/dist/packages/@ember/renderer/index.js +0 -14
- package/dist/packages/@ember/routing/index.js +0 -14
- package/dist/packages/@ember/template/index.js +0 -14
- package/dist/packages/@ember/template-factory/index.js +0 -8
- package/dist/packages/@ember/test/index.js +0 -27
- package/dist/packages/@glimmer/encoder/index.js +0 -1
- package/dist/packages/@glimmer/manager/index.js +0 -5
- package/dist/packages/@glimmer/node/index.js +0 -2
- package/dist/packages/@glimmer/program/index.js +0 -3
- package/dist/packages/@glimmer/reference/index.js +0 -2
- package/dist/packages/@glimmer/tracking/index.js +0 -48
- package/dist/packages/@glimmer/tracking/primitives/cache/index.js +0 -12
- package/dist/packages/ember/barrel.js +0 -511
- package/dist/packages/ember/index.js +0 -20
- package/dist/packages/ember-template-compiler/index.js +0 -17135
- package/dist/packages/ember-testing/lib/adapters/qunit.js +0 -53
- package/dist/packages/ember-testing/lib/ext/application.js +0 -174
- package/dist/packages/ember-testing/lib/ext/rsvp.js +0 -17
- package/dist/packages/ember-testing/lib/helpers/and_then.js +0 -11
- package/dist/packages/ember-testing/lib/helpers/current_path.js +0 -32
- package/dist/packages/ember-testing/lib/helpers/current_route_name.js +0 -32
- package/dist/packages/ember-testing/lib/helpers/current_url.js +0 -29
- package/dist/packages/ember-testing/lib/helpers/pause_test.js +0 -76
- package/dist/packages/ember-testing/lib/helpers/visit.js +0 -51
- package/dist/packages/ember-testing/lib/helpers/wait.js +0 -55
- package/dist/packages/ember-testing/lib/helpers.js +0 -17
- package/dist/packages/ember-testing/lib/initializers.js +0 -56
- package/dist/packages/ember-testing/lib/public-api.js +0 -8
- package/dist/packages/ember-testing/lib/setup_for_testing.js +0 -31
- package/dist/packages/ember-testing/lib/test/helpers.js +0 -133
- package/dist/packages/ember-testing/lib/test/on_inject_helpers.js +0 -39
- package/dist/packages/ember-testing/lib/test/pending_requests.js +0 -22
- package/dist/packages/ember-testing/lib/test/promise.js +0 -83
- package/dist/packages/ember-testing/lib/test/run.js +0 -11
- package/dist/packages/ember-testing/lib/test.js +0 -68
- package/dist/packages/router_js/index.js +0 -2
- package/dist/packages/shared-chunks/helpers-C1rIkuSd.js +0 -11
- package/dist/packages/shared-chunks/invoke-BjRgvK2V.js +0 -27
- package/dist/packages/shared-chunks/public-api-BQsJemZG.js +0 -20
- package/dist/packages/shared-chunks/template_registry-DigcUg9m.js +0 -24
- package/dist/packages/shared-chunks/to-string-CqD7_vQ4.js +0 -60
- package/types/stable/@ember/-internals/environment/lib/global.d.ts +0 -4
- package/types/stable/@ember/-internals/glimmer/lib/modifiers/internal.d.ts +0 -34
- package/types/stable/@ember/-internals/glimmer/lib/syntax/utils.d.ts +0 -5
- package/types/stable/@ember/-internals/glimmer/lib/templates/empty.d.ts +0 -4
- package/types/stable/@ember/-internals/glimmer/lib/utils/debug-render-message.d.ts +0 -4
- package/types/stable/@ember/-internals/metal/lib/dependent_keys.d.ts +0 -3
- package/types/stable/@ember/-internals/utils/lib/symbol.d.ts +0 -5
- package/types/stable/@ember/application/lib/lazy_load.d.ts +0 -38
- package/types/stable/@ember/template-compiler/lib/public-types.d.ts +0 -3
- package/types/stable/ember/barrel.d.ts +0 -358
- package/types/stable/ember/index.d.ts +0 -358
- package/types/stable/ember-template-compiler/lib/system/bootstrap.d.ts +0 -26
- package/types/stable/ember-template-compiler/lib/system/initializer.d.ts +0 -3
- package/types/stable/ember-testing/lib/adapters/qunit.d.ts +0 -22
- package/types/stable/ember-testing/lib/ext/application.d.ts +0 -12
- package/types/stable/ember-testing/lib/ext/rsvp.d.ts +0 -4
- package/types/stable/ember-testing/lib/helpers/and_then.d.ts +0 -4
- package/types/stable/ember-testing/lib/helpers/current_path.d.ts +0 -22
- package/types/stable/ember-testing/lib/helpers/current_route_name.d.ts +0 -21
- package/types/stable/ember-testing/lib/helpers/current_url.d.ts +0 -22
- package/types/stable/ember-testing/lib/helpers/pause_test.d.ts +0 -52
- package/types/stable/ember-testing/lib/helpers/visit.d.ts +0 -22
- package/types/stable/ember-testing/lib/helpers/wait.d.ts +0 -34
- package/types/stable/ember-testing/lib/helpers.d.ts +0 -3
- package/types/stable/ember-testing/lib/initializers.d.ts +0 -3
- package/types/stable/ember-testing/lib/setup_for_testing.d.ts +0 -15
- package/types/stable/ember-testing/lib/test/helpers.d.ts +0 -116
- package/types/stable/ember-testing/lib/test/on_inject_helpers.d.ts +0 -33
- package/types/stable/ember-testing/lib/test/promise.d.ts +0 -37
- package/types/stable/ember-testing/lib/test/run.d.ts +0 -3
- package/types/stable/loader/lib/index.d.ts +0 -4
- package/types/stable/require.d.ts +0 -4
- /package/dist/{packages → dev/packages}/@ember/-internals/browser-environment/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/error-handling/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/meta/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/owner/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/runtime/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/comparable.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/container_proxy.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/utility-types/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/views/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/views/lib/compat/attrs.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/views/lib/component_lookup.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/array/-internals.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/array/lib/make-array.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/array/make.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/array/mutable.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/debug/lib/capture-render-tree.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/debug/lib/inspect.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/debug/lib/testing.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/deprecated-features/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/destroyable/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/engine/lib/engine-parent.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/engine/parent.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/enumerable/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/enumerable/mutable.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/object/proxy.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/owner/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/reactive/collections.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/reactive/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/routing/lib/cache.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/routing/lib/controller_for.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/routing/lib/query_params.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/routing/lib/router_state.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/-internal-primitives.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/-internal-utils.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/-internal/primitives.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-action-syntax.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-each-in-into-each.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-wrap-mount-and-outlet.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/utils.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/public-api.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/runtime.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/system/calculate-location-display.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/runtime.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/test/adapter.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/is-equal.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/is_blank.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/is_none.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/is_present.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/type-of.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/version/index.js +0 -0
- /package/dist/{packages → dev/packages}/@glimmer/env/index.js +0 -0
- /package/dist/{packages → dev/packages}/@glimmer/owner/index.js +0 -0
- /package/dist/{packages → dev/packages}/@glimmer/wire-format/index.js +0 -0
- /package/dist/{packages → dev/packages}/@simple-dom/document/index.js +0 -0
- /package/dist/{packages → dev/packages}/backburner.js/index.js +0 -0
- /package/dist/{packages → dev/packages}/dag-map/index.js +0 -0
- /package/dist/{packages → dev/packages}/ember-testing/lib/adapters/adapter.js +0 -0
- /package/dist/{packages → dev/packages}/ember-testing/lib/test/adapter.js +0 -0
- /package/dist/{packages → dev/packages}/ember-testing/lib/test/waiters.js +0 -0
- /package/dist/{packages → dev/packages}/route-recognizer/index.js +0 -0
- /package/dist/{packages → dev/packages}/rsvp/index.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/array-utils-CZQxrdD3.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/assert-CUCJBR2C.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/cache-qDyqAcpg.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/chunk-3SQBS3Y5-Cj4eryg1.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/computed_cache-DmYKevAP.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/debug-brand-B1TWjOCH.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/dictionary-gc5gpyOG.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/index-BGP1rw3B.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/object-utils-AijlD-JH.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/present-B1rrjAVM.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/registers-ylirb0dq.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/rsvp-CnCSY930.js +0 -0
- /package/dist/{packages → prod/packages}/@ember/routing/-internals.js +0 -0
- /package/dist/{packages/@ember/template-compiler/index.js → prod/packages/@ember/template-compiler/runtime.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ember-template-compiler.js","sources":["../packages/@ember/-internals/browser-environment/lib/has-dom.ts","../packages/@ember/-internals/browser-environment/index.ts","../packages/@ember/-internals/environment/lib/global.ts","../packages/@ember/-internals/environment/lib/context.ts","../packages/@ember/-internals/environment/lib/env.ts","../packages/@ember/-internals/utils/lib/intern.ts","../packages/@ember/-internals/utils/lib/spec.ts","../packages/@ember/-internals/utils/lib/guid.ts","../packages/@ember/-internals/utils/lib/symbol.ts","../packages/@ember/-internals/utils/lib/dictionary.ts","../packages/@ember/-internals/utils/lib/get-debug-name.ts","../packages/@ember/-internals/utils/lib/super.ts","../packages/@ember/-internals/utils/lib/lookup-descriptor.ts","../packages/@ember/-internals/utils/lib/invoke.ts","../packages/@ember/-internals/utils/lib/name.ts","../packages/@ember/-internals/utils/lib/to-string.ts","../packages/@ember/-internals/utils/lib/is_proxy.ts","../packages/@ember/-internals/utils/lib/cache.ts","../packages/@ember/debug/lib/assert.ts","../packages/@ember/debug/lib/handlers.ts","../packages/@ember/debug/lib/deprecate.ts","../packages/@ember/debug/lib/testing.ts","../packages/@ember/debug/lib/warn.ts","../packages/@ember/debug/lib/inspect.ts","../packages/@ember/debug/lib/capture-render-tree.ts","../packages/@ember/debug/index.ts","../packages/@ember/-internals/utils/lib/mandatory-setter.ts","../packages/@ember/-internals/utils/index.ts","../packages/@ember/canary-features/index.ts","../packages/@ember/deprecated-features/index.ts","../packages/@glimmer/constants/lib/builder-constants.ts","../packages/@glimmer/constants/lib/curried.ts","../packages/@glimmer/constants/lib/dom.ts","../packages/@glimmer/debug-util/lib/assert.ts","../packages/@glimmer/debug-util/lib/debug-brand.ts","../packages/@glimmer/debug-util/lib/platform-utils.ts","../packages/@glimmer/debug-util/lib/present.ts","../packages/@glimmer/constants/lib/immediate.ts","../packages/@glimmer/constants/lib/syscall-ops.ts","../packages/@glimmer/constants/lib/vm-ops.ts","../packages/@glimmer/util/lib/local-logger.ts","../packages/@glimmer/util/lib/array-utils.ts","../packages/@glimmer/util/lib/collections.ts","../packages/@glimmer/util/lib/debug-steps.ts","../packages/@glimmer/util/lib/dom.ts","../packages/@glimmer/util/lib/intern.ts","../packages/@glimmer/util/lib/is-serialization-first-node.ts","../packages/@glimmer/util/lib/object-utils.ts","../packages/@glimmer/util/lib/string.ts","../packages/@glimmer/util/index.ts","../packages/@glimmer/wire-format/lib/opcodes.ts","../packages/@glimmer/wire-format/lib/resolution.ts","../packages/@glimmer/wire-format/lib/well-known.ts","../packages/@glimmer/wire-format/index.ts","../packages/@glimmer/compiler/lib/builder/builder-interface.ts","../packages/@glimmer/compiler/lib/builder/builder.ts","../packages/@glimmer/syntax/lib/generation/util.ts","../packages/@glimmer/syntax/lib/generation/printer.ts","../packages/@glimmer/syntax/lib/generation/print.ts","../packages/@glimmer/syntax/lib/keywords.ts","../node_modules/.pnpm/@handlebars+parser@2.2.2/node_modules/@handlebars/parser/dist/esm/exception.js","../node_modules/.pnpm/@handlebars+parser@2.2.2/node_modules/@handlebars/parser/dist/esm/visitor.js","../node_modules/.pnpm/@handlebars+parser@2.2.2/node_modules/@handlebars/parser/dist/esm/whitespace-control.js","../node_modules/.pnpm/@handlebars+parser@2.2.2/node_modules/@handlebars/parser/dist/esm/parser.js","../node_modules/.pnpm/@handlebars+parser@2.2.2/node_modules/@handlebars/parser/dist/esm/printer.js","../node_modules/.pnpm/@handlebars+parser@2.2.2/node_modules/@handlebars/parser/dist/esm/helpers.js","../node_modules/.pnpm/@handlebars+parser@2.2.2/node_modules/@handlebars/parser/dist/esm/parse.js","../node_modules/.pnpm/simple-html-tokenizer@0.5.11/node_modules/simple-html-tokenizer/dist/es6/index.js","../packages/@glimmer/syntax/lib/source/location.ts","../packages/@glimmer/syntax/lib/source/loc/kinds.ts","../packages/@glimmer/syntax/lib/source/loc/match.ts","../packages/@glimmer/syntax/lib/source/slice.ts","../packages/@glimmer/syntax/lib/source/loc/span.ts","../packages/@glimmer/syntax/lib/source/loc/offset.ts","../packages/@glimmer/syntax/lib/source/source.ts","../packages/@glimmer/syntax/lib/source/span-list.ts","../packages/@glimmer/syntax/lib/syntax-error.ts","../packages/@glimmer/syntax/lib/v1/visitor-keys.ts","../packages/@glimmer/syntax/lib/traversal/errors.ts","../packages/@glimmer/syntax/lib/traversal/path.ts","../packages/@glimmer/syntax/lib/traversal/traverse.ts","../packages/@glimmer/syntax/lib/traversal/walker.ts","../packages/@glimmer/syntax/lib/utils.ts","../packages/@glimmer/syntax/lib/v1/public-builders.ts","../packages/@glimmer/syntax/lib/v1/legacy-interop.ts","../packages/@glimmer/syntax/lib/v1/parser-builders.ts","../packages/@glimmer/syntax/lib/parser.ts","../packages/@glimmer/syntax/lib/parser/handlebars-node-visitors.ts","../packages/@glimmer/syntax/lib/parser/tokenizer-event-handlers.ts","../packages/@glimmer/syntax/lib/get-template-locals.ts","../packages/@glimmer/syntax/lib/v2/objects/node.ts","../packages/@glimmer/syntax/lib/v2/objects/args.ts","../packages/@glimmer/syntax/lib/v2/objects/attr-block.ts","../packages/@glimmer/syntax/lib/v2/objects/content.ts","../packages/@glimmer/syntax/lib/v2/objects/expr.ts","../packages/@glimmer/syntax/lib/v2/objects/internal-node.ts","../packages/@glimmer/syntax/lib/v2/objects/refs.ts","../packages/@glimmer/syntax/lib/v2/objects/constants.ts","../packages/@glimmer/syntax/lib/v2/objects/resolution.ts","../packages/@glimmer/syntax/lib/symbol-table.ts","../packages/@glimmer/syntax/lib/v2/builders.ts","../packages/@glimmer/syntax/lib/v2/loose-resolution.ts","../packages/@glimmer/syntax/lib/v2/normalize.ts","../packages/@glimmer/syntax/index.ts","../packages/@glimmer/vm/lib/content.ts","../packages/@glimmer/vm/lib/flags.ts","../packages/@glimmer/vm/lib/registers.ts","../packages/@glimmer/debug/lib/decoders.ts","../packages/@glimmer/debug/lib/dism/operands.ts","../packages/@glimmer/debug/lib/opcode-metadata.ts","../packages/@glimmer/debug/lib/render/annotations.ts","../packages/@glimmer/debug/lib/render/buffer.ts","../packages/@glimmer/debug/lib/render/styles.ts","../packages/@glimmer/debug/lib/render/format.ts","../packages/@glimmer/debug/lib/render/fragment-type.ts","../packages/@glimmer/debug/lib/render/fragment.ts","../packages/@glimmer/global-context/index.ts","../packages/@glimmer/validator/lib/debug.ts","../packages/@glimmer/validator/lib/utils.ts","../packages/@glimmer/validator/lib/validators.ts","../packages/@glimmer/validator/lib/tracking.ts","../packages/@glimmer/validator/lib/collections/array.ts","../packages/@glimmer/validator/lib/collections/map.ts","../packages/@glimmer/validator/lib/collections/set.ts","../packages/@glimmer/validator/lib/collections/weak-map.ts","../packages/@glimmer/validator/lib/collections/weak-set.ts","../packages/@glimmer/validator/index.ts","../packages/@glimmer/reference/lib/reference.ts","../packages/@glimmer/compiler/lib/passes/2-encoding/mir.ts","../packages/@glimmer/compiler/lib/shared/list.ts","../packages/@glimmer/compiler/lib/shared/result.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/visitors/expressions.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/keywords/impl.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/call-to-append.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/curry.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/dynamic-vars.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/has-block.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/if-unless.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/log.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/keywords/append.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/keywords/block.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/keywords/call.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/keywords/modifier.ts","../packages/@glimmer/compiler/lib/utils.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/visitors/element/classified.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/visitors/element/component.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/visitors/element/simple-element.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/visitors/statements.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/context.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/visitors/constants.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/visitors/strict-mode.ts","../packages/@glimmer/compiler/lib/passes/1-normalization/index.ts","../packages/@glimmer/compiler/lib/wire-format-debug.ts","../packages/@glimmer/compiler/lib/passes/2-encoding/expressions.ts","../packages/@glimmer/compiler/lib/passes/2-encoding/content.ts","../packages/@glimmer/compiler/lib/passes/2-encoding/index.ts","../packages/@glimmer/compiler/lib/compiler.ts","../packages/@glimmer/env/index.ts","../packages/ember/version.ts","../packages/@ember/template-compiler/lib/system/calculate-location-display.ts","../packages/@ember/template-compiler/lib/plugins/utils.ts","../packages/@ember/template-compiler/lib/plugins/assert-against-attrs.ts","../packages/@ember/template-compiler/lib/plugins/assert-against-named-outlets.ts","../packages/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.ts","../packages/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.ts","../packages/@ember/template-compiler/lib/plugins/transform-action-syntax.ts","../packages/@ember/template-compiler/lib/plugins/transform-each-in-into-each.ts","../packages/@ember/template-compiler/lib/plugins/transform-each-track-array.ts","../packages/@ember/template-compiler/lib/plugins/transform-in-element.ts","../packages/@ember/template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.ts","../packages/@ember/template-compiler/lib/plugins/transform-resolutions.ts","../packages/@ember/template-compiler/lib/plugins/transform-wrap-mount-and-outlet.ts","../packages/@ember/template-compiler/lib/plugins/index.ts","../packages/ember-template-compiler/lib/system/dasherize-component-name.ts","../packages/ember-template-compiler/lib/system/compile-options.ts","../packages/ember-template-compiler/lib/system/precompile.ts","../packages/ember-template-compiler/lib/system/compile.ts","../packages/ember-template-compiler/lib/system/bootstrap.ts","../packages/ember-template-compiler/lib/system/initializer.ts","../packages/ember-template-compiler/index.ts","../packages/ember-template-compiler/lib/plugins/assert-against-attrs.ts","../packages/ember-template-compiler/lib/plugins/assert-against-named-outlets.ts","../packages/ember-template-compiler/lib/plugins/assert-input-helper-without-block.ts","../packages/ember-template-compiler/lib/plugins/assert-reserved-named-arguments.ts","../packages/ember-template-compiler/lib/plugins/transform-action-syntax.ts","../packages/ember-template-compiler/lib/plugins/transform-each-in-into-each.ts","../packages/ember-template-compiler/lib/plugins/transform-each-track-array.ts","../packages/ember-template-compiler/lib/plugins/transform-in-element.ts","../packages/ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.ts","../packages/ember-template-compiler/lib/plugins/transform-resolutions.ts","../packages/ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet.ts","../packages/ember-template-compiler/lib/plugins/index.ts","../packages/ember-template-compiler/lib/system/calculate-location-display.ts","../packages/ember-template-compiler/minimal.ts","../broccoli/amd-compat-entrypoints/ember-template-compiler.js"],"sourcesContent":["// check if window exists and actually is the global\nexport default typeof self === 'object' &&\n self !== null &&\n self.Object === Object &&\n typeof Window !== 'undefined' &&\n self.constructor === Window &&\n typeof document === 'object' &&\n document !== null &&\n self.document === document &&\n typeof location === 'object' &&\n location !== null &&\n self.location === location &&\n typeof history === 'object' &&\n history !== null &&\n self.history === history &&\n typeof navigator === 'object' &&\n navigator !== null &&\n self.navigator === navigator &&\n typeof navigator.userAgent === 'string';\n","import hasDom from './lib/has-dom';\n\ndeclare const chrome: unknown;\ndeclare const opera: unknown;\n\nexport { default as hasDOM } from './lib/has-dom';\nexport const window = hasDom ? self : null;\nexport const location = hasDom ? self.location : null;\nexport const history = hasDom ? self.history : null;\nexport const userAgent = hasDom ? self.navigator.userAgent : 'Lynx (textmode)';\nexport const isChrome = hasDom ? typeof chrome === 'object' && !(typeof opera === 'object') : false;\nexport const isFirefox = hasDom ? /Firefox|FxiOS/.test(userAgent) : false;\n","/* globals window, self */\ndeclare const mainContext: object | undefined;\n\n// from lodash to catch fake globals\nfunction checkGlobal(value: any | null | undefined): object | undefined {\n return value && value.Object === Object ? value : undefined;\n}\n\n// element ids can ruin global miss checks\nfunction checkElementIdShadowing(value: any | null | undefined) {\n return value && value.nodeType === undefined ? value : undefined;\n}\n\ndeclare const global: unknown;\n\n// export real global\nexport default checkGlobal(checkElementIdShadowing(typeof global === 'object' && global)) ||\n checkGlobal(typeof self === 'object' && self) ||\n checkGlobal(typeof window === 'object' && window) ||\n (typeof mainContext !== 'undefined' && mainContext) || // set before strict mode in Ember loader/wrapper\n new Function('return this')(); // eval outside of strict mode\n","import global from './global';\n\nexport interface GlobalContext {\n imports: object;\n exports: object;\n lookup: Record<string, unknown>;\n}\n\n// legacy imports/exports/lookup stuff (should we keep this??)\nexport const context = (function (\n global: Record<string, unknown>,\n Ember: Partial<GlobalContext> | undefined\n): GlobalContext {\n return Ember === undefined\n ? { imports: global, exports: global, lookup: global }\n : {\n // import jQuery\n imports: Ember.imports || global,\n // export Ember\n exports: Ember.exports || global,\n // search for Namespaces\n lookup: Ember.lookup || global,\n };\n})(global, global.Ember);\n\nexport function getLookup(): Record<string, unknown> {\n return context.lookup;\n}\n\nexport function setLookup(value: Record<string, unknown>): void {\n context.lookup = value;\n}\n","import { DEBUG } from '@glimmer/env';\nimport global from './global';\n\n/**\n The hash of environment variables used to control various configuration\n settings. To specify your own or override default settings, add the\n desired properties to a global hash named `EmberENV` (or `ENV` for\n backwards compatibility with earlier versions of Ember). The `EmberENV`\n hash must be created before loading Ember.\n\n @class EmberENV\n @type Object\n @public\n*/\nexport const ENV = {\n ENABLE_OPTIONAL_FEATURES: false,\n\n /**\n Determines whether Ember should add to `Array`\n native object prototypes, a few extra methods in order to provide a more\n friendly API.\n\n The behavior from setting this option to `true` was deprecated in Ember 5.10.\n\n @property EXTEND_PROTOTYPES\n @type Boolean\n @default true\n @for EmberENV\n @private\n @deprecated in v5.10\n */\n EXTEND_PROTOTYPES: {\n Array: false,\n },\n\n /**\n The `LOG_STACKTRACE_ON_DEPRECATION` property, when true, tells Ember to log\n a full stack trace during deprecation warnings.\n\n @property LOG_STACKTRACE_ON_DEPRECATION\n @type Boolean\n @default true\n @for EmberENV\n @public\n */\n LOG_STACKTRACE_ON_DEPRECATION: true,\n\n /**\n The `LOG_VERSION` property, when true, tells Ember to log versions of all\n dependent libraries in use.\n\n @property LOG_VERSION\n @type Boolean\n @default true\n @for EmberENV\n @public\n */\n LOG_VERSION: true,\n\n RAISE_ON_DEPRECATION: false,\n\n STRUCTURED_PROFILE: false,\n\n /**\n Whether to perform extra bookkeeping needed to make the `captureRenderTree`\n API work.\n\n This has to be set before the ember JavaScript code is evaluated. This is\n usually done by setting `window.EmberENV = { _DEBUG_RENDER_TREE: true };`\n before the \"vendor\" `<script>` tag in `index.html`.\n\n Setting the flag after Ember is already loaded will not work correctly. It\n may appear to work somewhat, but fundamentally broken.\n\n This is not intended to be set directly. Ember Inspector will enable the\n flag on behalf of the user as needed.\n\n This flag is always on in development mode.\n\n The flag is off by default in production mode, due to the cost associated\n with the the bookkeeping work.\n\n The expected flow is that Ember Inspector will ask the user to refresh the\n page after enabling the feature. It could also offer a feature where the\n user add some domains to the \"always on\" list. In either case, Ember\n Inspector will inject the code on the page to set the flag if needed.\n\n @property _DEBUG_RENDER_TREE\n @for EmberENV\n @type Boolean\n @default false\n @private\n */\n _DEBUG_RENDER_TREE: DEBUG,\n\n /**\n Whether to force all deprecations to be enabled. This is used internally by\n Ember to enable deprecations in tests. It is not intended to be set in\n projects.\n\n @property _ALL_DEPRECATIONS_ENABLED\n @for EmberENV\n @type Boolean\n @default false\n @private\n */\n _ALL_DEPRECATIONS_ENABLED: false,\n\n /**\n Override the version of ember-source used to determine when deprecations \"break\".\n This is used internally by Ember to test with deprecated features \"removed\".\n This is never intended to be set by projects.\n @property _OVERRIDE_DEPRECATION_VERSION\n @for EmberENV\n @type string | null\n @default null\n @private\n */\n _OVERRIDE_DEPRECATION_VERSION: null,\n\n /**\n Whether the app defaults to using async observers.\n\n This is not intended to be set directly, as the implementation may change in\n the future. Use `@ember/optional-features` instead.\n\n @property _DEFAULT_ASYNC_OBSERVERS\n @for EmberENV\n @type Boolean\n @default false\n @private\n */\n _DEFAULT_ASYNC_OBSERVERS: false,\n\n /**\n Controls the maximum number of scheduled rerenders without \"settling\". In general,\n applications should not need to modify this environment variable, but please\n open an issue so that we can determine if a better default value is needed.\n\n @property _RERENDER_LOOP_LIMIT\n @for EmberENV\n @type number\n @default 1000\n @private\n */\n _RERENDER_LOOP_LIMIT: 1000,\n\n EMBER_LOAD_HOOKS: {} as {\n [hook: string]: Function[];\n },\n\n FEATURES: {} as {\n [feature: string]: boolean;\n },\n};\n\n((\n EmberENV: Record<string, unknown> & {\n EXTEND_PROTOTYPES?: boolean;\n EMBER_LOAD_HOOKS?: Record<string, unknown>;\n FEATURES?: Record<string, unknown>;\n }\n) => {\n if (typeof EmberENV !== 'object' || EmberENV === null) return;\n\n for (let flag in EmberENV) {\n if (\n !Object.prototype.hasOwnProperty.call(EmberENV, flag) ||\n flag === 'EXTEND_PROTOTYPES' ||\n flag === 'EMBER_LOAD_HOOKS'\n )\n continue;\n let defaultValue = (ENV as Record<string, unknown>)[flag];\n if (defaultValue === true) {\n (ENV as Record<string, unknown>)[flag] = EmberENV[flag] !== false;\n } else if (defaultValue === false) {\n (ENV as Record<string, unknown>)[flag] = EmberENV[flag] === true;\n } else {\n (ENV as Record<string, unknown>)[flag] = EmberENV[flag];\n }\n }\n\n // TODO this does not seem to be used by anything,\n // can we remove it? do we need to deprecate it?\n let { EMBER_LOAD_HOOKS } = EmberENV;\n if (typeof EMBER_LOAD_HOOKS === 'object' && EMBER_LOAD_HOOKS !== null) {\n for (let hookName in EMBER_LOAD_HOOKS) {\n if (!Object.prototype.hasOwnProperty.call(EMBER_LOAD_HOOKS, hookName)) continue;\n let hooks = EMBER_LOAD_HOOKS[hookName];\n if (Array.isArray(hooks)) {\n ENV.EMBER_LOAD_HOOKS[hookName] = hooks.filter((hook) => typeof hook === 'function');\n }\n }\n }\n let { FEATURES } = EmberENV;\n if (typeof FEATURES === 'object' && FEATURES !== null) {\n for (let feature in FEATURES) {\n if (!Object.prototype.hasOwnProperty.call(FEATURES, feature)) continue;\n ENV.FEATURES[feature] = FEATURES[feature] === true;\n }\n }\n\n if (DEBUG) {\n ENV._DEBUG_RENDER_TREE = true;\n }\n})(global.EmberENV);\n\nexport function getENV(): object {\n return ENV;\n}\n","/**\n Strongly hint runtimes to intern the provided string.\n\n When do I need to use this function?\n\n For the most part, never. Pre-mature optimization is bad, and often the\n runtime does exactly what you need it to, and more often the trade-off isn't\n worth it.\n\n Why?\n\n Runtimes store strings in at least 2 different representations:\n Ropes and Symbols (interned strings). The Rope provides a memory efficient\n data-structure for strings created from concatenation or some other string\n manipulation like splitting.\n\n Unfortunately checking equality of different ropes can be quite costly as\n runtimes must resort to clever string comparison algorithms. These\n algorithms typically cost in proportion to the length of the string.\n Luckily, this is where the Symbols (interned strings) shine. As Symbols are\n unique by their string content, equality checks can be done by pointer\n comparison.\n\n How do I know if my string is a rope or symbol?\n\n Typically (warning general sweeping statement, but truthy in runtimes at\n present) static strings created as part of the JS source are interned.\n Strings often used for comparisons can be interned at runtime if some\n criteria are met. One of these criteria can be the size of the entire rope.\n For example, in chrome 38 a rope longer then 12 characters will not\n intern, nor will segments of that rope.\n\n Some numbers: http://jsperf.com/eval-vs-keys/8\n\n Known Trick™\n\n @private\n @return {String} interned version of the provided string\n*/\nexport default function intern<S extends string>(str: S): S {\n let obj: Record<S, number> = Object.create(null);\n obj[str] = 1;\n for (let key in obj) {\n if (key === str) {\n return key;\n }\n }\n return str;\n}\n","/**\n Returns whether Type(value) is Object.\n\n Useful for checking whether a value is a valid WeakMap key.\n\n Refs: https://tc39.github.io/ecma262/#sec-typeof-operator-runtime-semantics-evaluation\n https://tc39.github.io/ecma262/#sec-weakmap.prototype.set\n\n @private\n @function isObject\n*/\nexport function isObject(value: any | null | undefined): value is object {\n return value !== null && (typeof value === 'object' || typeof value === 'function');\n}\n","import intern from './intern';\nimport { isObject } from './spec';\n\n/**\n @module @ember/object\n*/\n\n/**\n @private\n @return {Number} the uuid\n */\nlet _uuid = 0;\n\n/**\n Generates a universally unique identifier. This method\n is used internally by Ember for assisting with\n the generation of GUID's and other unique identifiers.\n\n @public\n @return {Number} [description]\n */\nexport function uuid(): number {\n return ++_uuid;\n}\n\n/**\n Prefix used for guids through out Ember.\n @private\n @property GUID_PREFIX\n @for Ember\n @type String\n @final\n */\nconst GUID_PREFIX = 'ember';\n\n// Used for guid generation...\nconst OBJECT_GUIDS = new WeakMap();\nconst NON_OBJECT_GUIDS = new Map();\n/**\n A unique key used to assign guids and other private metadata to objects.\n If you inspect an object in your browser debugger you will often see these.\n They can be safely ignored.\n\n On browsers that support it, these properties are added with enumeration\n disabled so they won't show up when you iterate over your properties.\n\n @private\n @property GUID_KEY\n @for Ember\n @type String\n @final\n*/\nexport const GUID_KEY = intern(`__ember${Date.now()}`);\n\n/**\n Generates a new guid, optionally saving the guid to the object that you\n pass in. You will rarely need to use this method. Instead you should\n call `guidFor(obj)`, which return an existing guid if available.\n\n @private\n @method generateGuid\n @static\n @for @ember/object/internals\n @param {Object} [obj] Object the guid will be used for. If passed in, the guid will\n be saved on the object and reused whenever you pass the same object\n again.\n\n If no object is passed, just generate a new guid.\n @param {String} [prefix] Prefix to place in front of the guid. Useful when you want to\n separate the guid into separate namespaces.\n @return {String} the guid\n*/\n// eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\nexport function generateGuid(obj: object, prefix = GUID_PREFIX): String {\n let guid = prefix + uuid().toString();\n\n if (isObject(obj)) {\n OBJECT_GUIDS.set(obj, guid);\n }\n\n return guid;\n}\n\n/**\n Returns a unique id for the object. If the object does not yet have a guid,\n one will be assigned to it. You can call this on any object,\n `EmberObject`-based or not.\n\n You can also use this method on DOM Element objects.\n\n @public\n @static\n @method guidFor\n @for @ember/object/internals\n @param {Object} obj any object, string, number, Element, or primitive\n @return {String} the unique guid for this instance.\n*/\nexport function guidFor(value: any | null | undefined): string {\n let guid;\n\n if (isObject(value)) {\n guid = OBJECT_GUIDS.get(value);\n\n if (guid === undefined) {\n guid = `${GUID_PREFIX}${uuid()}`;\n OBJECT_GUIDS.set(value, guid);\n }\n } else {\n guid = NON_OBJECT_GUIDS.get(value);\n\n if (guid === undefined) {\n let type = typeof value;\n\n if (type === 'string') {\n guid = `st${uuid()}`;\n } else if (type === 'number') {\n guid = `nu${uuid()}`;\n } else if (type === 'symbol') {\n guid = `sy${uuid()}`;\n } else {\n guid = `(${value})`;\n }\n\n NON_OBJECT_GUIDS.set(value, guid);\n }\n }\n\n return guid;\n}\n","import { DEBUG } from '@glimmer/env';\nimport { GUID_KEY } from './guid';\nimport intern from './intern';\n\nconst GENERATED_SYMBOLS: string[] = [];\n\nexport function isInternalSymbol(possibleSymbol: string) {\n return GENERATED_SYMBOLS.indexOf(possibleSymbol) !== -1;\n}\n\n// Some legacy symbols still need to be enumerable for a variety of reasons.\n// This code exists for that, and as a fallback in IE11. In general, prefer\n// `symbol` below when creating a new symbol.\nexport function enumerableSymbol(debugName: string): string {\n // TODO: Investigate using platform symbols, but we do not\n // want to require non-enumerability for this API, which\n // would introduce a large cost.\n let id = GUID_KEY + Math.floor(Math.random() * Date.now()).toString();\n let symbol = intern(`__${debugName}${id}__`);\n\n if (DEBUG) {\n GENERATED_SYMBOLS.push(symbol);\n }\n\n return symbol;\n}\n\nexport const symbol = Symbol;\n","// the delete is meant to hint at runtimes that this object should remain in\n// dictionary mode. This is clearly a runtime specific hack, but currently it\n// appears worthwhile in some usecases. Please note, these deletes do increase\n// the cost of creation dramatically over a plain Object.create. And as this\n// only makes sense for long-lived dictionaries that aren't instantiated often.\nexport default function makeDictionary<T>(parent: { [key: string]: T } | null): {\n [key: string]: T;\n} {\n let dict = Object.create(parent);\n dict['_dict'] = null;\n delete dict['_dict'];\n return dict;\n}\n","import { DEBUG } from '@glimmer/env';\n\nlet getDebugName: undefined | ((value: any) => string);\n\nif (DEBUG) {\n let getFunctionName = (fn: Function) => {\n let functionName = fn.name;\n\n if (functionName === undefined) {\n let match = Function.prototype.toString.call(fn).match(/function (\\w+)\\s*\\(/);\n\n functionName = (match && match[1]) || '';\n }\n\n return functionName.replace(/^bound /, '');\n };\n\n let getObjectName = (obj: object) => {\n let name;\n let className;\n\n if (obj.constructor && obj.constructor !== Object) {\n className = getFunctionName(obj.constructor);\n }\n\n if (\n 'toString' in obj &&\n obj.toString !== Object.prototype.toString &&\n obj.toString !== Function.prototype.toString\n ) {\n name = obj.toString();\n }\n\n // If the class has a decent looking name, and the `toString` is one of the\n // default Ember toStrings, replace the constructor portion of the toString\n // with the class name. We check the length of the class name to prevent doing\n // this when the value is minified.\n if (\n name &&\n name.match(/<.*:ember\\d+>/) &&\n className &&\n className[0] !== '_' &&\n className.length > 2 &&\n className !== 'Class'\n ) {\n return name.replace(/<.*:/, `<${className}:`);\n }\n\n return name || className;\n };\n\n let getPrimitiveName = (value: any) => {\n return String(value);\n };\n\n getDebugName = (value: any) => {\n if (typeof value === 'function') {\n return getFunctionName(value) || `(unknown function)`;\n } else if (typeof value === 'object' && value !== null) {\n return getObjectName(value) || `(unknown object)`;\n } else {\n return getPrimitiveName(value);\n }\n };\n}\n\nexport default getDebugName;\n","const HAS_SUPER_PATTERN = /\\.(_super|call\\(this|apply\\(this)/;\nconst fnToString = Function.prototype.toString;\n\nexport const checkHasSuper = (() => {\n let sourceAvailable =\n fnToString\n .call(function (this: any) {\n return this;\n })\n .indexOf('return this') > -1;\n\n if (sourceAvailable) {\n return function checkHasSuper(func: Function) {\n return HAS_SUPER_PATTERN.test(fnToString.call(func));\n };\n }\n\n return function checkHasSuper() {\n return true;\n };\n})();\n\nconst HAS_SUPER_MAP = new WeakMap();\n\nexport const ROOT = Object.freeze(function () {});\nHAS_SUPER_MAP.set(ROOT, false);\n\nfunction hasSuper(func: Function) {\n let hasSuper = HAS_SUPER_MAP.get(func);\n if (hasSuper === undefined) {\n hasSuper = checkHasSuper(func);\n HAS_SUPER_MAP.set(func, hasSuper);\n }\n return hasSuper;\n}\n\nclass ObserverListenerMeta {\n listeners?: string[] = undefined;\n observers?: { paths: string[]; sync: boolean } = undefined;\n}\n\nconst OBSERVERS_LISTENERS_MAP = new WeakMap<Function, ObserverListenerMeta>();\n\nfunction createObserverListenerMetaFor(fn: Function) {\n let meta = OBSERVERS_LISTENERS_MAP.get(fn);\n\n if (meta === undefined) {\n meta = new ObserverListenerMeta();\n OBSERVERS_LISTENERS_MAP.set(fn, meta);\n }\n\n return meta;\n}\n\nexport function observerListenerMetaFor(fn: Function): ObserverListenerMeta | undefined {\n return OBSERVERS_LISTENERS_MAP.get(fn);\n}\n\nexport function setObservers(func: Function, observers: { paths: string[]; sync: boolean }): void {\n let meta = createObserverListenerMetaFor(func);\n meta.observers = observers;\n}\n\nexport function setListeners(func: Function, listeners: string[]): void {\n let meta = createObserverListenerMetaFor(func);\n meta.listeners = listeners;\n}\n\nconst IS_WRAPPED_FUNCTION_SET = new WeakSet();\n\n/**\n Wraps the passed function so that `this._super` will point to the superFunc\n when the function is invoked. This is the primitive we use to implement\n calls to super.\n\n @private\n @method wrap\n @for Ember\n @param {Function} func The function to call\n @param {Function} superFunc The super function.\n @return {Function} wrapped function.\n*/\nexport function wrap(func: Function, superFunc: Function): Function {\n if (!hasSuper(func)) {\n return func;\n }\n // ensure an unwrapped super that calls _super is wrapped with a terminal _super\n if (!IS_WRAPPED_FUNCTION_SET.has(superFunc) && hasSuper(superFunc)) {\n return _wrap(func, _wrap(superFunc, ROOT));\n }\n return _wrap(func, superFunc);\n}\n\nfunction _wrap(func: Function, superFunc: Function): Function {\n function superWrapper(this: { _super?: Function }) {\n let orig = this._super;\n this._super = superFunc;\n let ret = func.apply(this, arguments);\n this._super = orig;\n return ret;\n }\n\n IS_WRAPPED_FUNCTION_SET.add(superWrapper);\n\n let meta = OBSERVERS_LISTENERS_MAP.get(func);\n\n if (meta !== undefined) {\n OBSERVERS_LISTENERS_MAP.set(superWrapper, meta);\n }\n\n return superWrapper;\n}\n","export default function lookupDescriptor(obj: object, keyName: string | symbol) {\n let current: object | null = obj;\n do {\n let descriptor = Object.getOwnPropertyDescriptor(current, keyName);\n if (descriptor !== undefined) {\n return descriptor;\n }\n current = Object.getPrototypeOf(current);\n } while (current !== null);\n return null;\n}\n","/**\n Checks to see if the `methodName` exists on the `obj`.\n\n ```javascript\n let foo = { bar: function() { return 'bar'; }, baz: null };\n\n Ember.canInvoke(foo, 'bar'); // true\n Ember.canInvoke(foo, 'baz'); // false\n Ember.canInvoke(foo, 'bat'); // false\n ```\n\n @method canInvoke\n @for Ember\n @param {Object} obj The object to check for the method\n @param {String} methodName The method name to check for\n @return {Boolean}\n @private\n*/\nexport function canInvoke(obj: unknown, methodName: string): boolean {\n return obj != null && typeof (obj as Record<string, unknown>)[methodName] === 'function';\n}\n\n/**\n @module @ember/utils\n*/\n","import { isObject } from './spec';\nconst NAMES = new WeakMap<object, string>();\n\nexport function setName(obj: object, name: string): void {\n if (isObject(obj)) NAMES.set(obj, name);\n}\n\nexport function getName(obj: object): string | undefined {\n return NAMES.get(obj);\n}\n","const objectToString = Object.prototype.toString;\n\nfunction isNone(obj: any | null | undefined): obj is null | undefined {\n return obj === null || obj === undefined;\n}\n\n/*\n A `toString` util function that supports objects without a `toString`\n method, e.g. an object created with `Object.create(null)`.\n*/\nexport default function toString(obj: any | undefined | null): string {\n if (typeof obj === 'string') {\n return obj;\n }\n if (null === obj) return 'null';\n if (undefined === obj) return 'undefined';\n\n if (Array.isArray(obj)) {\n // Reimplement Array.prototype.join according to spec (22.1.3.13)\n // Changing ToString(element) with this safe version of ToString.\n let r = '';\n\n for (let k = 0; k < obj.length; k++) {\n if (k > 0) {\n r += ',';\n }\n\n if (!isNone(obj[k])) {\n r += toString(obj[k]);\n }\n }\n\n return r;\n }\n if (typeof obj.toString === 'function') {\n return obj.toString();\n }\n return objectToString.call(obj);\n}\n","import type { _ProxyMixin as ProxyMixin } from '@ember/-internals/runtime';\nimport { isObject } from './spec';\n\nconst PROXIES = new WeakSet();\n\nexport function isProxy(value: unknown): value is ProxyMixin<unknown> {\n if (isObject(value)) {\n return PROXIES.has(value);\n }\n return false;\n}\n\nexport function setProxy(object: ProxyMixin<unknown>): void {\n if (isObject(object)) {\n PROXIES.add(object);\n }\n}\n","export default class Cache<T, V> {\n public size = 0;\n public misses = 0;\n public hits = 0;\n\n constructor(\n private limit: number,\n private func: (obj: T) => V,\n private store: Map<T, V> = new Map()\n ) {}\n\n get(key: T): V {\n if (this.store.has(key)) {\n this.hits++;\n // SAFETY: we know the value is present because `.has(key)` was `true`.\n return this.store.get(key) as V;\n } else {\n this.misses++;\n return this.set(key, this.func(key));\n }\n }\n\n set(key: T, value: V) {\n if (this.limit > this.size) {\n this.size++;\n this.store.set(key, value);\n }\n\n return value;\n }\n\n purge() {\n this.store.clear();\n this.size = 0;\n this.hits = 0;\n this.misses = 0;\n }\n}\n","import { DEBUG } from '@glimmer/env';\n\nexport interface AssertFunc {\n (desc: string, condition: unknown): asserts condition;\n (desc: string): never;\n}\n\nexport let assert: AssertFunc = (() => {}) as unknown as AssertFunc;\n\nexport function setAssert(implementation: typeof assert): typeof assert {\n assert = implementation;\n return implementation;\n}\n\nif (DEBUG) {\n /**\n Verify that a certain expectation is met, or throw a exception otherwise.\n\n This is useful for communicating assumptions in the code to other human\n readers as well as catching bugs that accidentally violates these\n expectations.\n\n Assertions are removed from production builds, so they can be freely added\n for documentation and debugging purposes without worries of incuring any\n performance penalty. However, because of that, they should not be used for\n checks that could reasonably fail during normal usage. Furthermore, care\n should be taken to avoid accidentally relying on side-effects produced from\n evaluating the condition itself, since the code will not run in production.\n\n ```javascript\n import { assert } from '@ember/debug';\n\n // Test for truthiness\n assert('Must pass a string', typeof str === 'string');\n\n // Fail unconditionally\n assert('This code path should never be run');\n ```\n\n @method assert\n @static\n @for @ember/debug\n @param {String} description Describes the expectation. This will become the\n text of the Error thrown if the assertion fails.\n @param {any} condition Must be truthy for the assertion to pass. If\n falsy, an exception will be thrown.\n @public\n @since 1.0.0\n */\n function assert(desc: string): never;\n function assert(desc: string, test: unknown): asserts test;\n function assert(desc: string, test?: unknown): asserts test {\n if (!test) {\n throw new Error(`Assertion Failed: ${desc}`);\n }\n }\n setAssert(assert);\n}\n","import { DEBUG } from '@glimmer/env';\n\nexport type Options = object;\nexport type Handler<O extends Options> = (message: string, options?: O) => void;\nexport type HandlerCallback<O extends Options> = (\n message: string,\n options: O | undefined,\n nextHandler: Handler<O>\n) => void;\n\nexport interface Handlers {\n [key: string]: Handler<Options>;\n}\n\nexport let HANDLERS: Handlers = {};\n\nexport type RegisterHandlerFunc<O extends Options> = (\n type: string,\n callback: HandlerCallback<O>\n) => void;\nexport type InvokeFunc = (type: string, message: string, test?: boolean, options?: Options) => void;\n\nlet registerHandler = function registerHandler<O extends Options>(\n _type: string,\n _callback: HandlerCallback<O>\n) {};\nlet invoke: InvokeFunc = () => {};\n\nif (DEBUG) {\n registerHandler = function registerHandler<O extends Options>(\n type: string,\n callback: HandlerCallback<O>\n ): void {\n let nextHandler: Handler<O> = HANDLERS[type] || (() => {});\n\n HANDLERS[type] = ((message: string, options?: O) => {\n callback(message, options, nextHandler);\n }) as Handler<Options>;\n };\n\n invoke = function invoke(type, message, test, options) {\n if (test) {\n return;\n }\n\n let handlerForType = HANDLERS[type];\n\n if (handlerForType) {\n handlerForType(message, options);\n }\n };\n}\n\nexport { registerHandler, invoke };\n","import { ENV } from '@ember/-internals/environment';\nimport { DEBUG } from '@glimmer/env';\n\nimport { assert } from './assert';\nimport type { HandlerCallback } from './handlers';\nimport { invoke, registerHandler as genericRegisterHandler } from './handlers';\n\n// This is a \"global\", but instead of declaring it as `declare global`, which\n// will expose it to all other modules, declare it *locally* (and don't export\n// it) so that it has the desired \"private global\" semantics -- however odd that\n// particular notion is.\ndeclare const __fail__: {\n fail(): void;\n};\n\ninterface Available {\n available: string;\n}\n\ninterface Enabled extends Available {\n enabled: string;\n}\n\nexport interface DeprecationOptions {\n id: string;\n until: string;\n url?: string;\n for: string;\n since: Available | Enabled;\n}\n\nexport type DeprecateFunc = (message: string, test?: boolean, options?: DeprecationOptions) => void;\nexport type MissingOptionDeprecateFunc = (id: string, missingOption: string) => string;\n\n/**\n @module @ember/debug\n @public\n*/\n/**\n Allows for runtime registration of handler functions that override the default deprecation behavior.\n Deprecations are invoked by calls to [@ember/debug/deprecate](/ember/release/classes/@ember%2Fdebug/methods/deprecate?anchor=deprecate).\n The following example demonstrates its usage by registering a handler that throws an error if the\n message contains the word \"should\", otherwise defers to the default handler.\n\n ```javascript\n import { registerDeprecationHandler } from '@ember/debug';\n\n registerDeprecationHandler((message, options, next) => {\n if (message.indexOf('should') !== -1) {\n throw new Error(`Deprecation message with should: ${message}`);\n } else {\n // defer to whatever handler was registered before this one\n next(message, options);\n }\n });\n ```\n\n The handler function takes the following arguments:\n\n <ul>\n <li> <code>message</code> - The message received from the deprecation call.</li>\n <li> <code>options</code> - An object passed in with the deprecation call containing additional information including:</li>\n <ul>\n <li> <code>id</code> - An id of the deprecation in the form of <code>package-name.specific-deprecation</code>.</li>\n <li> <code>until</code> - The Ember version number the feature and deprecation will be removed in.</li>\n </ul>\n <li> <code>next</code> - A function that calls into the previously registered handler.</li>\n </ul>\n\n @public\n @static\n @method registerDeprecationHandler\n @for @ember/debug\n @param handler {Function} A function to handle deprecation calls.\n @since 2.1.0\n*/\nlet registerHandler: (handler: HandlerCallback<DeprecationOptions>) => void = () => {};\nlet missingOptionsDeprecation: string;\nlet missingOptionsIdDeprecation: string;\nlet missingOptionDeprecation: MissingOptionDeprecateFunc = () => '';\nlet deprecate: DeprecateFunc = () => {};\n\nif (DEBUG) {\n registerHandler = function registerHandler(handler: HandlerCallback<DeprecationOptions>): void {\n genericRegisterHandler('deprecate', handler);\n };\n\n let formatMessage = function formatMessage(_message: string, options?: DeprecationOptions) {\n let message = _message;\n\n if (options?.id) {\n message = message + ` [deprecation id: ${options.id}]`;\n }\n\n if (options?.until) {\n message = message + ` This will be removed in ${options.for} ${options.until}.`;\n }\n\n if (options?.url) {\n message += ` See ${options.url} for more details.`;\n }\n\n return message;\n };\n\n registerHandler(function logDeprecationToConsole(message, options) {\n let updatedMessage = formatMessage(message, options);\n console.warn(`DEPRECATION: ${updatedMessage}`); // eslint-disable-line no-console\n });\n\n let captureErrorForStack: () => unknown;\n\n if (new Error().stack) {\n captureErrorForStack = () => new Error();\n } else {\n captureErrorForStack = () => {\n try {\n __fail__.fail();\n return;\n } catch (e) {\n return e;\n }\n };\n }\n\n registerHandler(function logDeprecationStackTrace(message, options, next) {\n if (ENV.LOG_STACKTRACE_ON_DEPRECATION) {\n let stackStr = '';\n let error = captureErrorForStack();\n let stack;\n\n if (error instanceof Error) {\n if (error.stack) {\n if ((error as any)['arguments']) {\n // Chrome\n stack = error.stack\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^([^(]+?)([\\n$])/gm, '{anonymous}($1)$2')\n .replace(/^Object.<anonymous>\\s*\\(([^)]+)\\)/gm, '{anonymous}($1)')\n .split('\\n');\n stack.shift();\n } else {\n // Firefox\n stack = error.stack\n .replace(/(?:\\n@:0)?\\s+$/m, '')\n .replace(/^\\(/gm, '{anonymous}(')\n .split('\\n');\n }\n\n stackStr = `\\n ${stack.slice(2).join('\\n ')}`;\n }\n }\n\n let updatedMessage = formatMessage(message, options);\n\n console.warn(`DEPRECATION: ${updatedMessage}${stackStr}`); // eslint-disable-line no-console\n } else {\n next(message, options);\n }\n });\n\n registerHandler(function raiseOnDeprecation(message, options, next) {\n if (ENV.RAISE_ON_DEPRECATION) {\n let updatedMessage = formatMessage(message);\n\n throw new Error(updatedMessage);\n } else {\n next(message, options);\n }\n });\n\n missingOptionsDeprecation =\n 'When calling `deprecate` you ' +\n 'must provide an `options` hash as the third parameter. ' +\n '`options` should include `id` and `until` properties.';\n missingOptionsIdDeprecation = 'When calling `deprecate` you must provide `id` in options.';\n\n missingOptionDeprecation = (id: string, missingOption: string): string => {\n return `When calling \\`deprecate\\` you must provide \\`${missingOption}\\` in options. Missing options.${missingOption} in \"${id}\" deprecation`;\n };\n /**\n @module @ember/debug\n @public\n */\n /**\n Display a deprecation warning with the provided message and a stack trace\n (Chrome and Firefox only).\n\n Ember itself leverages [Semantic Versioning](https://semver.org) to aid\n projects in keeping up with changes to the framework. Before any\n functionality or API is removed, it first flows linearly through a\n deprecation staging process. The staging process currently contains two\n stages: available and enabled.\n\n Deprecations are initially released into the 'available' stage.\n Deprecations will stay in this stage until the replacement API has been\n marked as a recommended practice via the RFC process and the addon\n ecosystem has generally adopted the change.\n\n Once a deprecation meets the above criteria, it will move into the\n 'enabled' stage where it will remain until the functionality or API is\n eventually removed.\n\n For application and addon developers, \"available\" deprecations are not\n urgent and \"enabled\" deprecations require action.\n\n * In a production build, this method is defined as an empty function (NOP).\n Uses of this method in Ember itself are stripped from the ember.prod.js build.\n\n ```javascript\n import { deprecate } from '@ember/debug';\n\n deprecate(\n 'Use of `assign` has been deprecated. Please use `Object.assign` or the spread operator instead.',\n false,\n {\n id: 'ember-polyfills.deprecate-assign',\n until: '5.0.0',\n url: 'https://deprecations.emberjs.com/v4.x/#toc_ember-polyfills-deprecate-assign',\n for: 'ember-source',\n since: {\n available: '4.0.0',\n enabled: '4.0.0',\n },\n }\n );\n ```\n\n @method deprecate\n @for @ember/debug\n @param {String} message A description of the deprecation.\n @param {Boolean} test A boolean. If falsy, the deprecation will be displayed.\n @param {Object} options\n @param {String} options.id A unique id for this deprecation. The id can be\n used by Ember debugging tools to change the behavior (raise, log or silence)\n for that specific deprecation. The id should be namespaced by dots, e.g.\n \"view.helper.select\".\n @param {string} options.until The version of Ember when this deprecation\n warning will be removed.\n @param {String} options.for A namespace for the deprecation, usually the package name\n @param {Object} options.since Describes when the deprecation became available and enabled.\n @param {String} [options.url] An optional url to the transition guide on the\n emberjs.com website.\n @static\n @public\n @since 1.0.0\n */\n deprecate = function deprecate(\n message: string,\n test?: boolean,\n options?: DeprecationOptions\n ): void {\n assert(missingOptionsDeprecation, Boolean(options && (options.id || options.until)));\n assert(missingOptionsIdDeprecation, Boolean(options!.id));\n assert(missingOptionDeprecation(options!.id, 'until'), Boolean(options!.until));\n assert(missingOptionDeprecation(options!.id, 'for'), Boolean(options!.for));\n assert(missingOptionDeprecation(options!.id, 'since'), Boolean(options!.since));\n\n invoke('deprecate', message, test, options);\n };\n}\n\nexport default deprecate;\n\nexport {\n registerHandler,\n missingOptionsDeprecation,\n missingOptionsIdDeprecation,\n missingOptionDeprecation,\n};\n","let testing = false;\n\nexport function isTesting(): boolean {\n return testing;\n}\n\nexport function setTesting(value: boolean) {\n testing = Boolean(value);\n}\n","import { DEBUG } from '@glimmer/env';\n\nimport { assert } from './assert';\nimport type { HandlerCallback } from './handlers';\nimport { invoke, registerHandler as genericRegisterHandler } from './handlers';\n\nexport interface WarnOptions {\n id: string;\n}\n\nexport type RegisterHandlerFunc = (handler: HandlerCallback<WarnOptions>) => void;\nexport interface WarnFunc {\n (message: string): void;\n (message: string, test: boolean): void;\n (message: string, options: WarnOptions): void;\n (message: string, test: boolean, options: WarnOptions): void;\n}\n\nlet registerHandler: RegisterHandlerFunc = () => {};\nlet warn: WarnFunc = () => {};\nlet missingOptionsDeprecation: string;\nlet missingOptionsIdDeprecation: string;\n\n/**\n@module @ember/debug\n*/\n\nif (DEBUG) {\n /**\n Allows for runtime registration of handler functions that override the default warning behavior.\n Warnings are invoked by calls made to [@ember/debug/warn](/ember/release/classes/@ember%2Fdebug/methods/warn?anchor=warn).\n The following example demonstrates its usage by registering a handler that does nothing overriding Ember's\n default warning behavior.\n\n ```javascript\n import { registerWarnHandler } from '@ember/debug';\n\n // next is not called, so no warnings get the default behavior\n registerWarnHandler(() => {});\n ```\n\n The handler function takes the following arguments:\n\n <ul>\n <li> <code>message</code> - The message received from the warn call. </li>\n <li> <code>options</code> - An object passed in with the warn call containing additional information including:</li>\n <ul>\n <li> <code>id</code> - An id of the warning in the form of <code>package-name.specific-warning</code>.</li>\n </ul>\n <li> <code>next</code> - A function that calls into the previously registered handler.</li>\n </ul>\n\n @public\n @static\n @method registerWarnHandler\n @for @ember/debug\n @param handler {Function} A function to handle warnings.\n @since 2.1.0\n */\n registerHandler = function registerHandler(handler) {\n genericRegisterHandler('warn', handler);\n };\n\n registerHandler(function logWarning(message) {\n /* eslint-disable no-console */\n console.warn(`WARNING: ${message}`);\n /* eslint-enable no-console */\n });\n\n missingOptionsDeprecation =\n 'When calling `warn` you ' +\n 'must provide an `options` hash as the third parameter. ' +\n '`options` should include an `id` property.';\n missingOptionsIdDeprecation = 'When calling `warn` you must provide `id` in options.';\n\n /**\n Display a warning with the provided message.\n\n * In a production build, this method is defined as an empty function (NOP).\n Uses of this method in Ember itself are stripped from the ember.prod.js build.\n\n ```javascript\n import { warn } from '@ember/debug';\n import tomsterCount from './tomster-counter'; // a module in my project\n\n // Log a warning if we have more than 3 tomsters\n warn('Too many tomsters!', tomsterCount <= 3, {\n id: 'ember-debug.too-many-tomsters'\n });\n ```\n\n @method warn\n @for @ember/debug\n @static\n @param {String} message A warning to display.\n @param {Boolean|Object} test An optional boolean. If falsy, the warning\n will be displayed. If `test` is an object, the `test` parameter can\n be used as the `options` parameter and the warning is displayed.\n @param {Object} options\n @param {String} options.id The `id` can be used by Ember debugging tools\n to change the behavior (raise, log, or silence) for that specific warning.\n The `id` should be namespaced by dots, e.g. \"ember-debug.feature-flag-with-features-stripped\"\n @public\n @since 1.0.0\n */\n warn = function warn(message: string, test?: boolean | WarnOptions, options?: WarnOptions) {\n if (arguments.length === 2 && typeof test === 'object') {\n options = test;\n test = false;\n }\n\n assert(missingOptionsDeprecation, Boolean(options));\n assert(missingOptionsIdDeprecation, Boolean(options && options.id));\n\n // SAFETY: we have explicitly assigned `false` if the user invoked the\n // arity-2 version of the overload, so we know `test` is always either\n // `undefined` or a `boolean` for type-safe callers.\n invoke('warn', message, test as boolean | undefined, options);\n };\n}\n\nexport default warn;\nexport { registerHandler, missingOptionsIdDeprecation, missingOptionsDeprecation };\n","import { assert } from './assert';\nconst { toString: objectToString } = Object.prototype;\nconst { toString: functionToString } = Function.prototype;\nconst { isArray } = Array;\nconst { keys: objectKeys } = Object;\nconst { stringify } = JSON;\nconst LIST_LIMIT = 100;\nconst DEPTH_LIMIT = 4;\nconst SAFE_KEY = /^[\\w$]+$/;\n\n/**\n @module @ember/debug\n*/\n/**\n Convenience method to inspect an object. This method will attempt to\n convert the object into a useful string description.\n\n It is a pretty simple implementation. If you want something more robust,\n use something like JSDump: https://github.com/NV/jsDump\n\n @method inspect\n @static\n @param {Object} obj The object you want to inspect.\n @return {String} A description of the object\n @since 1.4.0\n @private\n*/\nexport default function inspect(this: any, obj: any | null | undefined): string {\n // detect Node util.inspect call inspect(depth: number, opts: object)\n if (typeof obj === 'number' && arguments.length === 2) {\n return this;\n }\n\n return inspectValue(obj, 0);\n}\n\nfunction inspectValue(value: any | null | undefined, depth: number, seen?: WeakSet<object>) {\n let valueIsArray = false;\n switch (typeof value) {\n case 'undefined':\n return 'undefined';\n case 'object':\n if (value === null) return 'null';\n if (isArray(value)) {\n valueIsArray = true;\n break;\n }\n // is toString Object.prototype.toString or undefined then traverse\n if (value.toString === objectToString || value.toString === undefined) {\n break;\n }\n // custom toString\n return value.toString();\n case 'function':\n return value.toString === functionToString\n ? value.name\n ? `[Function:${value.name}]`\n : `[Function]`\n : value.toString();\n case 'string':\n return stringify(value);\n case 'symbol':\n case 'boolean':\n case 'number':\n default:\n return value.toString();\n }\n if (seen === undefined) {\n seen = new WeakSet();\n } else {\n if (seen.has(value)) return `[Circular]`;\n }\n seen.add(value);\n\n return valueIsArray\n ? inspectArray(value, depth + 1, seen)\n : inspectObject(value, depth + 1, seen);\n}\n\nfunction inspectKey(key: string) {\n return SAFE_KEY.test(key) ? key : stringify(key);\n}\n\nfunction inspectObject<T extends object>(obj: T, depth: number, seen: WeakSet<object>) {\n if (depth > DEPTH_LIMIT) {\n return '[Object]';\n }\n let s = '{';\n let keys = objectKeys(obj) as Array<keyof T>;\n for (let i = 0; i < keys.length; i++) {\n s += i === 0 ? ' ' : ', ';\n\n if (i >= LIST_LIMIT) {\n s += `... ${keys.length - LIST_LIMIT} more keys`;\n break;\n }\n\n let key = keys[i];\n assert('has key', key); // Looping over array\n s += `${inspectKey(String(key))}: ${inspectValue(obj[key], depth, seen)}`;\n }\n s += ' }';\n return s;\n}\n\nfunction inspectArray(arr: any[], depth: number, seen: WeakSet<object>) {\n if (depth > DEPTH_LIMIT) {\n return '[Array]';\n }\n let s = '[';\n for (let i = 0; i < arr.length; i++) {\n s += i === 0 ? ' ' : ', ';\n\n if (i >= LIST_LIMIT) {\n s += `... ${arr.length - LIST_LIMIT} more items`;\n break;\n }\n\n s += inspectValue(arr[i], depth, seen);\n }\n s += ' ]';\n return s;\n}\n","import type { Renderer } from '@ember/-internals/glimmer';\nimport type Owner from '@ember/owner';\nimport type { CapturedRenderNode } from '@glimmer/interfaces';\n\n/**\n @module @ember/debug\n*/\n/**\n Ember Inspector calls this function to capture the current render tree.\n\n In production mode, this requires turning on `ENV._DEBUG_RENDER_TREE`\n before loading Ember.\n\n @private\n @static\n @method captureRenderTree\n @for @ember/debug\n @param app {ApplicationInstance} An `ApplicationInstance`.\n @since 3.14.0\n*/\nexport default function captureRenderTree(app: Owner): CapturedRenderNode[] {\n let domRenderer = app.lookup('renderer:-dom') as Renderer;\n\n if (!domRenderer) {\n throw new Error(`BUG: owner is missing renderer`);\n }\n // SAFETY: Ideally we'd assert here but that causes awkward circular requires since this is also in @ember/debug.\n // This is only for debug stuff so not very risky.\n let renderer = domRenderer;\n\n return renderer.debugRenderTree.capture();\n}\n","import { isChrome, isFirefox } from '@ember/-internals/browser-environment';\nimport type { AnyFn } from '@ember/-internals/utility-types';\nimport { DEBUG } from '@glimmer/env';\nimport type { DeprecateFunc, DeprecationOptions } from './lib/deprecate';\nimport defaultDeprecate from './lib/deprecate';\nimport { isTesting } from './lib/testing';\nimport type { WarnFunc } from './lib/warn';\nimport _warn from './lib/warn';\nimport { assert, setAssert } from './lib/assert';\n\nexport { registerHandler as registerWarnHandler } from './lib/warn';\nexport {\n registerHandler as registerDeprecationHandler,\n type DeprecationOptions,\n} from './lib/deprecate';\nexport { default as inspect } from './lib/inspect';\nexport { isTesting, setTesting } from './lib/testing';\nexport { default as captureRenderTree } from './lib/capture-render-tree';\n\nexport type DebugFunctionType =\n | 'assert'\n | 'info'\n | 'warn'\n | 'debug'\n | 'deprecate'\n | 'debugSeal'\n | 'debugFreeze'\n | 'runInDebug'\n | 'deprecateFunc';\n\nexport type DebugFunc = (message: string) => void;\nexport type DebugSealFunc = (obj: object) => void;\nexport type DebugFreezeFunc = (obj: object) => void;\nexport type InfoFunc = (message: string, options?: object) => void;\nexport type RunInDebugFunc = (func: () => void) => void;\nexport type DeprecateFuncFunc = (\n message: string,\n options: DeprecationOptions,\n func: Function\n) => Function;\n\nexport type GetDebugFunction = {\n (type: 'assert'): typeof assert;\n (type: 'info'): InfoFunc;\n (type: 'warn'): WarnFunc;\n (type: 'debug'): DebugFunc;\n (type: 'debugSeal'): DebugSealFunc;\n (type: 'debugFreeze'): DebugFreezeFunc;\n (type: 'deprecateFunc'): DeprecateFuncFunc;\n (type: 'deprecate'): DeprecateFunc;\n (type: 'runInDebug'): RunInDebugFunc;\n};\n\nexport type SetDebugFunction = {\n (type: 'assert', func: typeof assert): typeof assert;\n (type: 'info', func: InfoFunc): InfoFunc;\n (type: 'warn', func: WarnFunc): WarnFunc;\n (type: 'debug', func: DebugFunc): DebugFunc;\n (type: 'debugSeal', func: DebugSealFunc): DebugSealFunc;\n (type: 'debugFreeze', func: DebugFreezeFunc): DebugFreezeFunc;\n (type: 'deprecateFunc', func: DeprecateFuncFunc): DeprecateFuncFunc;\n (type: 'deprecate', func: DeprecateFunc): DeprecateFunc;\n (type: 'runInDebug', func: RunInDebugFunc): RunInDebugFunc;\n};\n\n// These are the default production build versions:\nconst noop = () => {};\n\n// SAFETY: these casts are just straight-up lies, but the point is that they do\n// not do anything in production builds.\nlet info: InfoFunc = noop;\nlet warn: WarnFunc = noop;\nlet debug: DebugFunc = noop;\nlet currentDeprecate: DeprecateFunc | undefined;\nlet debugSeal: DebugSealFunc = noop;\nlet debugFreeze: DebugFreezeFunc = noop;\nlet runInDebug: RunInDebugFunc = noop;\nlet setDebugFunction: SetDebugFunction = noop as unknown as SetDebugFunction;\nlet getDebugFunction: GetDebugFunction = noop as unknown as GetDebugFunction;\n\nlet deprecateFunc: DeprecateFuncFunc = function () {\n return arguments[arguments.length - 1];\n};\n\nexport function deprecate(...args: Parameters<DeprecateFunc>): ReturnType<DeprecateFunc> {\n return (currentDeprecate ?? defaultDeprecate)(...args);\n}\n\nif (DEBUG) {\n setDebugFunction = function (type: DebugFunctionType, callback: Function) {\n switch (type) {\n case 'assert':\n return setAssert(callback as typeof assert);\n case 'info':\n return (info = callback as InfoFunc);\n case 'warn':\n return (warn = callback as WarnFunc);\n case 'debug':\n return (debug = callback as DebugFunc);\n case 'deprecate':\n if (callback === deprecate) {\n currentDeprecate = undefined;\n return deprecate;\n } else {\n return (currentDeprecate = callback as DeprecateFunc);\n }\n case 'debugSeal':\n return (debugSeal = callback as DebugSealFunc);\n case 'debugFreeze':\n return (debugFreeze = callback as DebugFreezeFunc);\n case 'runInDebug':\n return (runInDebug = callback as RunInDebugFunc);\n case 'deprecateFunc':\n return (deprecateFunc = callback as DeprecateFuncFunc);\n }\n } as any;\n\n getDebugFunction = function (type: DebugFunctionType) {\n switch (type) {\n case 'assert':\n return assert;\n case 'info':\n return info;\n case 'warn':\n return warn;\n case 'debug':\n return debug;\n case 'deprecate':\n return deprecate;\n case 'debugSeal':\n return debugSeal;\n case 'debugFreeze':\n return debugFreeze;\n case 'runInDebug':\n return runInDebug;\n case 'deprecateFunc':\n return deprecateFunc;\n }\n } as any;\n}\n\n/**\n@module @ember/debug\n*/\n\nif (DEBUG) {\n /**\n Display a debug notice.\n\n Calls to this function are not invoked in production builds.\n\n ```javascript\n import { debug } from '@ember/debug';\n\n debug('I\\'m a debug notice!');\n ```\n\n @method debug\n @for @ember/debug\n @static\n @param {String} message A debug message to display.\n @public\n */\n setDebugFunction('debug', function debug(message) {\n console.debug(`DEBUG: ${message}`); /* eslint-disable-line no-console */\n });\n\n /**\n Display an info notice.\n\n Calls to this function are removed from production builds, so they can be\n freely added for documentation and debugging purposes without worries of\n incuring any performance penalty.\n\n @method info\n @private\n */\n setDebugFunction('info', function info() {\n console.info(...arguments); /* eslint-disable-line no-console */\n });\n\n /**\n @module @ember/debug\n @public\n */\n\n /**\n Alias an old, deprecated method with its new counterpart.\n\n Display a deprecation warning with the provided message and a stack trace\n (Chrome and Firefox only) when the assigned method is called.\n\n Calls to this function are removed from production builds, so they can be\n freely added for documentation and debugging purposes without worries of\n incuring any performance penalty.\n\n ```javascript\n import { deprecateFunc } from '@ember/debug';\n\n oldMethod = deprecateFunc('Please use the new, updated method', options, newMethod);\n ```\n\n @method deprecateFunc\n @static\n @for @ember/debug\n @param {String} message A description of the deprecation.\n @param {Object} [options] The options object for `deprecate`.\n @param {Function} func The new function called to replace its deprecated counterpart.\n @return {Function} A new function that wraps the original function with a deprecation warning\n @private\n */\n setDebugFunction('deprecateFunc', function deprecateFunc(...args: any[]) {\n if (args.length === 3) {\n let [message, options, func] = args as [string, DeprecationOptions, AnyFn];\n return function (this: any, ...args: any[]) {\n deprecate(message, false, options);\n return func.apply(this, args);\n };\n } else {\n let [message, func] = args;\n return function (this: any) {\n deprecate(message);\n return func.apply(this, arguments);\n };\n }\n });\n\n /**\n @module @ember/debug\n @public\n */\n /**\n Run a function meant for debugging.\n\n Calls to this function are removed from production builds, so they can be\n freely added for documentation and debugging purposes without worries of\n incuring any performance penalty.\n\n ```javascript\n import Component from '@ember/component';\n import { runInDebug } from '@ember/debug';\n\n runInDebug(() => {\n Component.reopen({\n didInsertElement() {\n console.log(\"I'm happy\");\n }\n });\n });\n ```\n\n @method runInDebug\n @for @ember/debug\n @static\n @param {Function} func The function to be executed.\n @since 1.5.0\n @public\n */\n setDebugFunction('runInDebug', function runInDebug(func) {\n func();\n });\n\n setDebugFunction('debugSeal', function debugSeal(obj) {\n Object.seal(obj);\n });\n\n setDebugFunction('debugFreeze', function debugFreeze(obj) {\n // re-freezing an already frozen object introduces a significant\n // performance penalty on Chrome (tested through 59).\n //\n // See: https://bugs.chromium.org/p/v8/issues/detail?id=6450\n if (!Object.isFrozen(obj)) {\n Object.freeze(obj);\n }\n });\n\n setDebugFunction('warn', _warn);\n}\n\nlet _warnIfUsingStrippedFeatureFlags;\n\nif (DEBUG && !isTesting()) {\n if (typeof window !== 'undefined' && (isFirefox || isChrome) && window.addEventListener) {\n window.addEventListener(\n 'load',\n () => {\n if (\n document.documentElement &&\n document.documentElement.dataset &&\n !document.documentElement.dataset['emberExtension']\n ) {\n let downloadURL;\n\n if (isChrome) {\n downloadURL =\n 'https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi';\n } else if (isFirefox) {\n downloadURL = 'https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/';\n }\n\n debug(`For more advanced debugging, install the Ember Inspector from ${downloadURL}`);\n }\n },\n false\n );\n }\n}\n\nexport {\n assert,\n info,\n warn,\n debug,\n debugSeal,\n debugFreeze,\n runInDebug,\n deprecateFunc,\n setDebugFunction,\n getDebugFunction,\n _warnIfUsingStrippedFeatureFlags,\n};\n","import { assert } from '@ember/debug';\nimport { DEBUG } from '@glimmer/env';\nimport type { Tag } from '@glimmer/validator';\nimport lookupDescriptor from './lookup-descriptor';\n\nexport let setupMandatorySetter:\n | ((tag: Tag, obj: object, keyName: string | symbol) => void)\n | undefined;\nexport let teardownMandatorySetter: ((obj: object, keyName: string | symbol) => void) | undefined;\nexport let setWithMandatorySetter: ((obj: object, keyName: string, value: any) => void) | undefined;\n\ntype PropertyDescriptorWithMeta = PropertyDescriptor & { hadOwnProperty?: boolean };\n\nfunction isElementKey(key: string | number | symbol) {\n return typeof key === 'number' ? isPositiveInt(key) : isStringInt(key as string);\n}\n\nfunction isStringInt(str: string) {\n let num = parseInt(str, 10);\n return isPositiveInt(num) && str === String(num);\n}\n\nfunction isPositiveInt(num: number) {\n return num >= 0 && num % 1 === 0;\n}\n\nif (DEBUG) {\n let SEEN_TAGS = new WeakSet();\n\n let MANDATORY_SETTERS: WeakMap<object, { [key: string | symbol]: PropertyDescriptorWithMeta }> =\n new WeakMap();\n\n let propertyIsEnumerable = function (obj: object, key: string | symbol) {\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n };\n\n setupMandatorySetter = function (tag: Tag, obj: object, keyName: string | symbol) {\n if (SEEN_TAGS.has(tag)) {\n return;\n }\n\n SEEN_TAGS.add(tag);\n\n if (Array.isArray(obj) && isElementKey(keyName)) {\n return;\n }\n\n let desc = (lookupDescriptor(obj, keyName) as PropertyDescriptorWithMeta) || {};\n\n if (desc.get || desc.set) {\n // if it has a getter or setter, we can't install the mandatory setter.\n // native setters are allowed, we have to assume that they will resolve\n // to tracked properties.\n return;\n }\n\n if (desc && (!desc.configurable || !desc.writable)) {\n // if it isn't writable anyways, so we shouldn't provide the setter.\n // if it isn't configurable, we can't overwrite it anyways.\n return;\n }\n\n let setters = MANDATORY_SETTERS.get(obj);\n\n if (setters === undefined) {\n setters = {};\n MANDATORY_SETTERS.set(obj, setters);\n }\n\n desc.hadOwnProperty = Object.hasOwnProperty.call(obj, keyName);\n\n setters[keyName] = desc;\n\n Object.defineProperty(obj, keyName, {\n configurable: true,\n enumerable: propertyIsEnumerable(obj, keyName),\n\n get() {\n if (desc.get) {\n return desc.get.call(this);\n } else {\n return desc.value;\n }\n },\n\n set(value: any) {\n assert(\n `You attempted to update ${this}.${String(keyName)} to \"${String(\n value\n )}\", but it is being tracked by a tracking context, such as a template, computed property, or observer. In order to make sure the context updates properly, you must invalidate the property when updating it. You can mark the property as \\`@tracked\\`, or use \\`@ember/object#set\\` to do this.`\n );\n },\n });\n };\n\n teardownMandatorySetter = function (obj: object, keyName: string | symbol) {\n let setters = MANDATORY_SETTERS.get(obj);\n\n if (setters !== undefined && setters[keyName] !== undefined) {\n Object.defineProperty(obj, keyName, setters[keyName]!);\n\n delete setters[keyName];\n }\n };\n\n setWithMandatorySetter = function (obj: object, keyName: string, value: any) {\n let setters = MANDATORY_SETTERS.get(obj);\n\n if (setters !== undefined && setters[keyName] !== undefined) {\n let setter = setters[keyName]!;\n\n if (setter.set) {\n setter.set.call(obj, value);\n } else {\n setter.value = value;\n\n // If the object didn't have own property before, it would have changed\n // the enumerability after setting the value the first time.\n if (!setter.hadOwnProperty) {\n let desc = lookupDescriptor(obj, keyName);\n desc!.enumerable = true;\n\n Object.defineProperty(obj, keyName, desc!);\n }\n }\n } else {\n (obj as any)[keyName] = value;\n }\n };\n}\n","/*\n This package will be eagerly parsed and should have no dependencies on external\n packages.\n\n It is intended to be used to share utility methods that will be needed\n by every Ember application (and is **not** a dumping ground of useful utilities).\n\n Utility methods that are needed in < 80% of cases should be placed\n elsewhere (so they can be lazily evaluated / parsed).\n*/\nexport { symbol, enumerableSymbol, isInternalSymbol } from './lib/symbol';\nexport { default as dictionary } from './lib/dictionary';\nexport { default as getDebugName } from './lib/get-debug-name';\nexport { uuid, GUID_KEY, generateGuid, guidFor } from './lib/guid';\nexport { default as intern } from './lib/intern';\nexport {\n checkHasSuper,\n ROOT,\n wrap,\n observerListenerMetaFor,\n setObservers,\n setListeners,\n} from './lib/super';\nexport { default as lookupDescriptor } from './lib/lookup-descriptor';\nexport { canInvoke } from './lib/invoke';\nexport { getName, setName } from './lib/name';\nexport { default as toString } from './lib/to-string';\nexport { isObject } from './lib/spec';\nexport { isProxy, setProxy } from './lib/is_proxy';\nexport { default as Cache } from './lib/cache';\nexport {\n setupMandatorySetter,\n teardownMandatorySetter,\n setWithMandatorySetter,\n} from './lib/mandatory-setter';\n","import { ENV } from '@ember/-internals/environment';\n\n/**\n Set `EmberENV.FEATURES` in your application's `config/environment.js` file\n to enable canary features in your application.\n\n See the [feature flag guide](https://guides.emberjs.com/release/configuring-ember/feature-flags/)\n for more details.\n\n @module @ember/canary-features\n @public\n*/\n\nexport const DEFAULT_FEATURES = {\n // FLAG_NAME: true/false\n};\n\n/**\n The hash of enabled Canary features. Add to this, any canary features\n before creating your application.\n\n @class FEATURES\n @static\n @since 1.1.0\n @public\n*/\nexport const FEATURES = Object.assign(DEFAULT_FEATURES, ENV.FEATURES);\n\n/**\n Determine whether the specified `feature` is enabled. Used by Ember's\n build tools to exclude experimental features from beta/stable builds.\n\n You can define the following configuration options:\n\n * `EmberENV.ENABLE_OPTIONAL_FEATURES` - enable any features that have not been explicitly\n enabled/disabled.\n\n @method isEnabled\n @param {String} feature The feature to check\n @return {Boolean}\n @since 1.1.0\n @public\n*/\nexport function isEnabled(feature: string): boolean {\n let value = FEATURES[feature];\n\n if (value === true || value === false) {\n return value;\n } else if (ENV.ENABLE_OPTIONAL_FEATURES) {\n return true;\n } else {\n return false;\n }\n}\n\n// Uncomment the below when features are present:\n\n// function featureValue(value: null | boolean) {\n// if (ENV.ENABLE_OPTIONAL_FEATURES && value === null) {\n// return true;\n// }\n\n// return value;\n// }\n//\n// export const FLAG_NAME = featureValue(FEATURES.FLAG_NAME);\n","// These versions should be the version that the deprecation was _introduced_,\n// not the version that the feature will be removed.\n\n/** Introduced in 4.0.0-beta.1 */\nexport const ASSIGN = true;\n","/// Builder ///\n\nexport type BUILDER_LITERAL = 0;\nexport const BUILDER_LITERAL: BUILDER_LITERAL = 0;\n\nexport type BUILDER_COMMENT = 1;\nexport const BUILDER_COMMENT: BUILDER_COMMENT = 1;\n\nexport type BUILDER_APPEND = 2;\nexport const BUILDER_APPEND: BUILDER_APPEND = 2;\n\nexport type BUILDER_MODIFIER = 3;\nexport const BUILDER_MODIFIER: BUILDER_MODIFIER = 3;\n\nexport type BUILDER_DYNAMIC_COMPONENT = 4;\nexport const BUILDER_DYNAMIC_COMPONENT: BUILDER_DYNAMIC_COMPONENT = 4;\n\nexport type BUILDER_GET = 5;\nexport const BUILDER_GET: BUILDER_GET = 5;\n\nexport type BUILDER_CONCAT = 6;\nexport const BUILDER_CONCAT: BUILDER_CONCAT = 6;\n\nexport type BUILDER_HAS_BLOCK = 7;\nexport const BUILDER_HAS_BLOCK: BUILDER_HAS_BLOCK = 7;\n\nexport type BUILDER_HAS_BLOCK_PARAMS = 8;\nexport const BUILDER_HAS_BLOCK_PARAMS: BUILDER_HAS_BLOCK_PARAMS = 8;\n\n/// HeadKind ///\n\nexport type BLOCK_HEAD = 'Block';\nexport const BLOCK_HEAD: BLOCK_HEAD = 'Block';\n\nexport type CALL_HEAD = 'Call';\nexport const CALL_HEAD: CALL_HEAD = 'Call';\n\nexport type ELEMENT_HEAD = 'Element';\nexport const ELEMENT_HEAD: ELEMENT_HEAD = 'Element';\n\nexport type APPEND_PATH_HEAD = 'AppendPath';\nexport const APPEND_PATH_HEAD: APPEND_PATH_HEAD = 'AppendPath';\n\nexport type APPEND_EXPR_HEAD = 'AppendExpr';\nexport const APPEND_EXPR_HEAD: APPEND_EXPR_HEAD = 'AppendExpr';\n\nexport type LITERAL_HEAD = 'Literal';\nexport const LITERAL_HEAD: LITERAL_HEAD = 'Literal';\n\nexport type MODIFIER_HEAD = 'Modifier';\nexport const MODIFIER_HEAD: MODIFIER_HEAD = 'Modifier';\n\nexport type DYNAMIC_COMPONENT_HEAD = 'DynamicComponent';\nexport const DYNAMIC_COMPONENT_HEAD: DYNAMIC_COMPONENT_HEAD = 'DynamicComponent';\n\nexport type COMMENT_HEAD = 'Comment';\nexport const COMMENT_HEAD: COMMENT_HEAD = 'Comment';\n\nexport type SPLAT_HEAD = 'Splat';\nexport const SPLAT_HEAD: SPLAT_HEAD = 'Splat';\n\nexport type KEYWORD_HEAD = 'Keyword';\nexport const KEYWORD_HEAD: KEYWORD_HEAD = 'Keyword';\n\nexport type HeadKind =\n | BLOCK_HEAD\n | CALL_HEAD\n | ELEMENT_HEAD\n | APPEND_PATH_HEAD\n | APPEND_EXPR_HEAD\n | LITERAL_HEAD\n | MODIFIER_HEAD\n | DYNAMIC_COMPONENT_HEAD\n | COMMENT_HEAD\n | SPLAT_HEAD\n | KEYWORD_HEAD;\n\n/// VariableKind ///\n\nexport type LOCAL_VAR = 'Local';\nexport const LOCAL_VAR: LOCAL_VAR = 'Local';\n\nexport type FREE_VAR = 'Free';\nexport const FREE_VAR: FREE_VAR = 'Free';\n\nexport type ARG_VAR = 'Arg';\nexport const ARG_VAR: ARG_VAR = 'Arg';\n\nexport type BLOCK_VAR = 'Block';\nexport const BLOCK_VAR: BLOCK_VAR = 'Block';\n\nexport type THIS_VAR = 'This';\nexport const THIS_VAR: THIS_VAR = 'This';\n\nexport type VariableKind = LOCAL_VAR | FREE_VAR | ARG_VAR | BLOCK_VAR | THIS_VAR;\n\n/// ExpressionKind ///\n\nexport type LITERAL_EXPR = 'Literal';\nexport const LITERAL_EXPR: LITERAL_EXPR = 'Literal';\n\nexport type CALL_EXPR = 'Call';\nexport const CALL_EXPR: CALL_EXPR = 'Call';\n\nexport type GET_PATH_EXPR = 'GetPath';\nexport const GET_PATH_EXPR: GET_PATH_EXPR = 'GetPath';\n\nexport type GET_VAR_EXPR = 'GetVar';\nexport const GET_VAR_EXPR: GET_VAR_EXPR = 'GetVar';\n\nexport type CONCAT_EXPR = 'Concat';\nexport const CONCAT_EXPR: CONCAT_EXPR = 'Concat';\n\nexport type HAS_BLOCK_EXPR = 'HasBlock';\nexport const HAS_BLOCK_EXPR: HAS_BLOCK_EXPR = 'HasBlock';\n\nexport type HAS_BLOCK_PARAMS_EXPR = 'HasBlockParams';\nexport const HAS_BLOCK_PARAMS_EXPR: HAS_BLOCK_PARAMS_EXPR = 'HasBlockParams';\n\nexport type ExpressionKind =\n | LITERAL_EXPR\n | CALL_EXPR\n | GET_PATH_EXPR\n | GET_VAR_EXPR\n | CONCAT_EXPR\n | HAS_BLOCK_EXPR\n | HAS_BLOCK_PARAMS_EXPR;\n","import type { CurriedComponent, CurriedHelper, CurriedModifier } from '@glimmer/interfaces';\n\nexport const CURRIED_COMPONENT = 0 satisfies CurriedComponent;\nexport const CURRIED_HELPER = 1 satisfies CurriedHelper;\nexport const CURRIED_MODIFIER = 2 satisfies CurriedModifier;\n","import type { InsertPosition, Namespace, NodeType } from '@glimmer/interfaces';\n\nexport const RAW_NODE = -1;\nexport const ELEMENT_NODE: NodeType.ELEMENT_NODE = 1;\nexport const TEXT_NODE: NodeType.TEXT_NODE = 3;\nexport const COMMENT_NODE: NodeType.COMMENT_NODE = 8;\nexport const DOCUMENT_NODE: NodeType.DOCUMENT_NODE = 9;\nexport const DOCUMENT_TYPE_NODE: NodeType.DOCUMENT_TYPE_NODE = 10;\nexport const DOCUMENT_FRAGMENT_NODE: NodeType.DOCUMENT_FRAGMENT_NODE = 11;\n\nexport const NS_HTML = 'http://www.w3.org/1999/xhtml' as Namespace.HTML;\nexport const NS_MATHML = 'http://www.w3.org/1998/Math/MathML' as Namespace.MathML;\nexport const NS_SVG = 'http://www.w3.org/2000/svg' as Namespace.SVG;\nexport const NS_XLINK = 'http://www.w3.org/1999/xlink' as Namespace.XLink;\nexport const NS_XML = 'http://www.w3.org/XML/1998/namespace' as Namespace.XML;\nexport const NS_XMLNS = 'http://www.w3.org/2000/xmlns/' as Namespace.XMLNS;\n\nexport const INSERT_BEFORE_BEGIN = 'beforebegin' as InsertPosition.beforebegin;\nexport const INSERT_AFTER_BEGIN = 'afterbegin' as InsertPosition.afterbegin;\nexport const INSERT_BEFORE_END = 'beforeend' as InsertPosition.beforeend;\nexport const INSERT_AFTER_END = 'afterend' as InsertPosition.afterend;\n","// import Logger from './logger';\n\nimport { LOCAL_DEBUG } from '@glimmer/local-debug-flags';\n\nexport default function assert(test: unknown, msg: string): asserts test {\n if (LOCAL_DEBUG) {\n if (!test) {\n throw new Error(msg || 'assertion failure');\n }\n }\n}\n\nexport function deprecate(desc: string) {\n if (LOCAL_DEBUG) {\n LOCAL_LOGGER.warn(`DEPRECATION: ${desc}`);\n }\n}\n\n/**\n * This constant exists to make it easier to differentiate normal logs from\n * errant console.logs. LOCAL_LOGGER should only be used inside a\n * LOCAL_TRACE_LOGGING check.\n *FF\n * It does not alleviate the need to check LOCAL_TRACE_LOGGING, which is used\n * for stripping.\n */\nexport const LOCAL_LOGGER = console;\n\n/**\n * This constant exists to make it easier to differentiate normal logs from\n * errant console.logs. LOGGER can be used outside of LOCAL_TRACE_LOGGING checks,\n * and is meant to be used in the rare situation where a console.* call is\n * actually appropriate.\n */\nexport const LOGGER = console;\n\nexport function assertNever(value: never, desc = 'unexpected unreachable branch'): never {\n LOGGER.log('unreachable', value);\n LOGGER.log(`${desc} :: ${JSON.stringify(value)} (${value})`);\n\n throw new Error(`code reached unreachable`);\n}\n","import type {\n AnyFn,\n AppendingBlock,\n BlockArguments,\n Cursor,\n Dict,\n NamedArguments,\n PositionalArguments,\n VMArguments,\n} from '@glimmer/interfaces';\nimport { LOCAL_DEBUG } from '@glimmer/local-debug-flags';\n\nconst LOCAL_DEBUG_BRAND = new WeakMap<object, ClassifiedLocalDebug>();\n\n/**\n * An object branded with a local debug type has special local trace logging\n * behavior.\n *\n * If `LOCAL_DEBUG` is `false`, this function does nothing (and is removed\n * by the minifier in builder).\n */\nexport function setLocalDebugType<P extends LocalDebugType>(\n type: P,\n ...brand: SetLocalDebugArgs<P>\n): void;\nexport function setLocalDebugType(type: string, ...brand: [value: object, options?: object]) {\n if (LOCAL_DEBUG) {\n if (brand.length === 1) {\n const [value] = brand;\n LOCAL_DEBUG_BRAND.set(value, { type, value } as ClassifiedLocalDebug);\n } else {\n const [value, options] = brand;\n LOCAL_DEBUG_BRAND.set(value, { type, value, options } as ClassifiedLocalDebug);\n }\n }\n}\n\n/**\n * An object branded with a local debug type has special local trace logging\n * behavior.\n *\n * If `LOCAL_DEBUG` is `false`, this function always returns undefined. However,\n * this function should only be called by the trace logger, which should only\n * run in trace `LOCAL_DEBUG` + `LOCAL_TRACE_LOGGING` mode.\n */\nexport function getLocalDebugType(value: object): ClassifiedLocalDebug | void {\n if (LOCAL_DEBUG) {\n return LOCAL_DEBUG_BRAND.get(value);\n }\n}\n\ninterface SourcePosition {\n line: number;\n column: number;\n}\n\nexport interface LocalDebugMap {\n args: [VMArguments];\n 'args:positional': [PositionalArguments];\n 'args:named': [NamedArguments];\n 'args:blocks': [BlockArguments];\n cursor: [Cursor];\n 'block:simple': [AppendingBlock];\n 'block:remote': [AppendingBlock];\n 'block:resettable': [AppendingBlock];\n 'factory:helper': [AnyFn, { name: string }];\n\n 'syntax:source': [{ readonly source: string; readonly module: string }];\n 'syntax:symbol-table:program': [object, { debug?: () => DebugProgramSymbolTable }];\n\n 'syntax:mir:node': [\n { loc: { startPosition: SourcePosition; endPosition: SourcePosition }; type: string },\n ];\n}\n\nexport interface DebugProgramSymbolTable {\n readonly templateLocals: readonly string[];\n readonly keywords: readonly string[];\n readonly symbols: readonly string[];\n readonly upvars: readonly string[];\n readonly named: Dict<number>;\n readonly blocks: Dict<number>;\n}\n\nexport type LocalDebugType = keyof LocalDebugMap;\n\nexport type SetLocalDebugArgs<D extends LocalDebugType> = {\n [P in D]: LocalDebugMap[P] extends [infer This extends object, infer Options extends object]\n ? [This, Options]\n : LocalDebugMap[P] extends [infer This extends object]\n ? [This]\n : never;\n}[D];\n\nexport type ClassifiedLocalDebug = {\n [P in LocalDebugType]: LocalDebugMap[P] extends [infer T, infer Options]\n ? { type: P; value: T; options: Options }\n : LocalDebugMap[P] extends [infer T]\n ? { type: P; value: T }\n : never;\n}[LocalDebugType];\n\nexport type ClassifiedLocalDebugFor<N extends LocalDebugType> = LocalDebugMap[N] extends [\n infer T,\n infer Options,\n]\n ? { type: N; value: T; options: Options }\n : LocalDebugMap[N] extends [infer T]\n ? { type: N; value: T }\n : never;\n\nexport type ClassifiedOptions<N extends LocalDebugType> = LocalDebugMap[N] extends [\n unknown,\n infer Options,\n]\n ? Options\n : never;\n","import type { Maybe, Optional } from '@glimmer/interfaces';\nimport { LOCAL_DEBUG } from '@glimmer/local-debug-flags';\n\nexport type Factory<T> = new (...args: unknown[]) => T;\n\nexport function unwrap<T>(val: Maybe<T>): T {\n if (LOCAL_DEBUG) {\n if (val === null || val === undefined) throw new Error(`Expected value to be present`);\n }\n return val as T;\n}\n\n/**\n * This function takes an optional function and returns its result. It's\n * expected to be used with optional debug methods, in the context of an\n * existing `LOCAL_DEBUG` check.\n */\nexport function dev<T>(val: Optional<() => T>): T {\n if (val === undefined) {\n throw new Error(\n `Expected debug method to be present. Make sure you're calling \\`dev()\\` in the context of a \\`LOCAL_DEBUG\\` check.`\n );\n }\n\n return val();\n}\n\nexport function expect<T>(val: Maybe<T>, message: string): T;\nexport function expect(val: unknown, message: string): unknown {\n if (LOCAL_DEBUG) if (val === null || val === undefined) throw new Error(message);\n return val;\n}\n\nexport function unreachable(message?: string): never;\nexport function unreachable(message?: string): void {\n if (LOCAL_DEBUG) throw new Error(message);\n}\n\nexport function exhausted(value: never): never;\nexport function exhausted(value: never): void {\n if (LOCAL_DEBUG) throw new Error(`Exhausted ${String(value)}`);\n}\n","import type { Nullable, Present, PresentArray } from '@glimmer/interfaces';\nimport { LOCAL_DEBUG } from '@glimmer/local-debug-flags';\n\nexport function isPresent<T>(value: T): value is Present<T> {\n return value !== null && value !== undefined;\n}\n\nexport function assertPresent<T extends string>(value: T): asserts value is Present<T>;\nexport function assertPresent<T>(value: T, message: string): asserts value is Present<T>;\nexport function assertPresent<T>(value: T, message?: string): asserts value is Present<T> {\n if (LOCAL_DEBUG && !isPresent(value)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme\n throw new Error(`Expected present, got ${typeof value === 'string' ? value : message!}`);\n }\n}\n\nexport function isPresentArray<T>(list?: readonly T[]): list is PresentArray<T> {\n return list ? list.length > 0 : false;\n}\n\nexport function ifPresent<T, U, V>(\n list: T[],\n ifPresent: (input: PresentArray<T>) => U,\n otherwise: () => V\n): U | V {\n if (isPresentArray(list)) {\n return ifPresent(list);\n } else {\n return otherwise();\n }\n}\n\nexport function arrayToOption<T>(list: T[]): Nullable<PresentArray<T>> {\n if (isPresentArray(list)) {\n return list;\n } else {\n return null;\n }\n}\n\nexport function assertPresentArray<T>(\n list: T[],\n message = `unexpected empty list`\n): asserts list is PresentArray<T> {\n if (LOCAL_DEBUG && !isPresentArray(list)) {\n throw new Error(message);\n }\n}\n\nexport function asPresentArray<T>(list: T[], message = `unexpected empty list`): PresentArray<T> {\n assertPresentArray(list, message);\n return list;\n}\n\nexport function getLast<T>(list: PresentArray<T>): T;\nexport function getLast<T>(list: T[]): T | undefined;\nexport function getLast<T>(list: T[]): T | undefined {\n return list.length === 0 ? undefined : (list[list.length - 1] as T);\n}\n\nexport function getFirst<T>(list: PresentArray<T>): T;\nexport function getFirst<T>(list: T[]): T | undefined;\nexport function getFirst<T>(list: T[]): T | undefined {\n return list.length === 0 ? undefined : (list[0] as T);\n}\n\nexport function mapPresentArray<T, U>(\n list: PresentArray<T>,\n mapper: (input: T) => U\n): PresentArray<U>;\nexport function mapPresentArray<T, U>(\n list: PresentArray<T> | null,\n mapper: (input: T) => U\n): PresentArray<U> | null;\nexport function mapPresentArray<T, U>(\n list: PresentArray<T> | null,\n mapper: (input: T) => U\n): PresentArray<U> | null {\n if (list === null) {\n return null;\n }\n let out: U[] = [];\n\n for (let item of list) {\n out.push(mapper(item));\n }\n\n return out as PresentArray<U>;\n}\n","import { localAssert } from '@glimmer/debug-util';\nimport { LOCAL_DEBUG } from '@glimmer/local-debug-flags';\n\n/*\n Encoding notes\n\n We use 30 bit integers for encoding, so that we don't ever encode a non-SMI\n integer to push on the stack.\n\n Handles are >= 0\n Immediates are < 0\n\n True, False, Undefined and Null are pushed as handles into the symbol table,\n with well known handles (0, 1, 2, 3)\n\n The negative space is divided into positives and negatives. Positives are\n higher numbers (-1, -2, -3, etc), negatives are lower.\n\n We only encode immediates for two reasons:\n\n 1. To transfer over the wire, so they're smaller in general\n 2. When pushing values onto the stack from the low level/inner VM, which may\n be converted into WASM one day.\n\n This allows the low-level VM to always use SMIs, and to minimize using JS\n values via handles for things like the stack pointer and frame pointer.\n Externally, most code pushes values as JS values, except when being pulled\n from the append byte code where it was already encoded.\n\n Logically, this is because the low level VM doesn't really care about these\n higher level values. For instance, the result of a userland helper may be a\n number, or a boolean, or undefined/null, but it's extra work to figure that\n out and push it correctly, vs. just pushing the value as a JS value with a\n handle.\n\n Note: The details could change here in the future, this is just the current\n strategy.\n*/\n\nexport const MAX_SMI = 2 ** 30 - 1;\nexport const MIN_SMI = ~MAX_SMI;\nexport const SIGN_BIT = ~(2 ** 29);\nexport const MAX_INT = ~SIGN_BIT - 1;\nexport const MIN_INT = ~MAX_INT;\n\nexport const FALSE_HANDLE = 0;\nexport const TRUE_HANDLE = 1;\nexport const NULL_HANDLE = 2;\nexport const UNDEFINED_HANDLE = 3;\n\nexport const ENCODED_FALSE_HANDLE = FALSE_HANDLE;\nexport const ENCODED_TRUE_HANDLE = TRUE_HANDLE;\nexport const ENCODED_NULL_HANDLE = NULL_HANDLE;\nexport const ENCODED_UNDEFINED_HANDLE = UNDEFINED_HANDLE;\n\nexport function isHandle(value: number) {\n return value >= 0;\n}\n\nexport function isNonPrimitiveHandle(value: number) {\n return value > ENCODED_UNDEFINED_HANDLE;\n}\n\nexport function constants(...values: unknown[]): unknown[] {\n return [false, true, null, undefined, ...values];\n}\n\nexport function isSmallInt(value: number) {\n return value % 1 === 0 && value <= MAX_INT && value >= MIN_INT;\n}\n\nexport function encodeNegative(num: number) {\n if (LOCAL_DEBUG) {\n localAssert(num % 1 === 0 && num >= MIN_INT && num < 0, `Could not encode negative: ${num}`);\n }\n\n return num & SIGN_BIT;\n}\n\nexport function decodeNegative(num: number) {\n if (LOCAL_DEBUG) {\n localAssert(\n num % 1 === 0 && num < ~MAX_INT && num >= MIN_SMI,\n `Could not decode negative: ${num}`\n );\n }\n\n return num | ~SIGN_BIT;\n}\n\nexport function encodePositive(num: number) {\n if (LOCAL_DEBUG) {\n localAssert(num % 1 === 0 && num >= 0 && num <= MAX_INT, `Could not encode positive: ${num}`);\n }\n\n return ~num;\n}\n\nexport function decodePositive(num: number) {\n if (LOCAL_DEBUG) {\n localAssert(num % 1 === 0 && num <= 0 && num >= ~MAX_INT, `Could not decode positive: ${num}`);\n }\n\n return ~num;\n}\n\nexport function encodeHandle(num: number) {\n if (LOCAL_DEBUG) {\n localAssert(num % 1 === 0 && num >= 0 && num <= MAX_SMI, `Could not encode handle: ${num}`);\n }\n\n return num;\n}\n\nexport function decodeHandle(num: number) {\n if (LOCAL_DEBUG) {\n localAssert(num % 1 === 0 && num <= MAX_SMI && num >= 0, `Could not decode handle: ${num}`);\n }\n\n return num;\n}\n\nexport function encodeImmediate(num: number) {\n num |= 0;\n return num < 0 ? encodeNegative(num) : encodePositive(num);\n}\n\nexport function decodeImmediate(num: number) {\n num |= 0;\n return num > SIGN_BIT ? decodePositive(num) : decodeNegative(num);\n}\n\n// Warm\n[1, 2, 3].forEach((x) => decodeHandle(encodeHandle(x)));\n[1, -1].forEach((x) => decodeImmediate(encodeImmediate(x)));\n","import type {\n VmAppendDocumentFragment,\n VmAppendHTML,\n VmAppendNode,\n VmAppendSafeHTML,\n VmAppendText,\n VmAssertSame,\n VmBeginComponentTransaction,\n VmBindDynamicScope,\n VmCaptureArgs,\n VmChildScope,\n VmCloseElement,\n VmComment,\n VmCommitComponentTransaction,\n VmCompileBlock,\n VmComponentAttr,\n VmConcat,\n VmConstant,\n VmConstantReference,\n VmContentType,\n VmCreateComponent,\n VmCurry,\n VmDebugger,\n VmDidCreateElement,\n VmDidRenderLayout,\n VmDup,\n VmDynamicAttr,\n VmDynamicContentType,\n VmDynamicHelper,\n VmDynamicModifier,\n VmEnter,\n VmEnterList,\n VmExit,\n VmExitList,\n VmFetch,\n VmFlushElement,\n VmGetBlock,\n VmGetComponentLayout,\n VmGetComponentSelf,\n VmGetComponentTagName,\n VmGetDynamicVar,\n VmGetProperty,\n VmGetVariable,\n VmHasBlock,\n VmHasBlockParams,\n VmHelper,\n VmIfInline,\n VmInvokeComponentLayout,\n VmInvokeYield,\n VmIterate,\n VmJumpEq,\n VmJumpIf,\n VmJumpUnless,\n VmLoad,\n VmLog,\n VmMain,\n VmModifier,\n VmNot,\n VmOp,\n VmOpenDynamicElement,\n VmOpenElement,\n VmPop,\n VmPopArgs,\n VmPopDynamicScope,\n VmPopRemoteElement,\n VmPopScope,\n VmPopulateLayout,\n VmPrepareArgs,\n VmPrimitive,\n VmPrimitiveReference,\n VmPushArgs,\n VmPushBlockScope,\n VmPushComponentDefinition,\n VmPushDynamicComponentInstance,\n VmPushDynamicScope,\n VmPushEmptyArgs,\n VmPushRemoteElement,\n VmPushSymbolTable,\n VmPutComponentOperations,\n VmRegisterComponentDestructor,\n VmReifyU32,\n VmResolveCurriedComponent,\n VmResolveDynamicComponent,\n VmRootScope,\n VmSetBlock,\n VmSetBlocks,\n VmSetNamedVariables,\n VmSetVariable,\n VmSize,\n VmSpreadBlock,\n VmStaticAttr,\n VmStaticComponentAttr,\n VmText,\n VmToBoolean,\n VmVirtualRootScope,\n} from '@glimmer/interfaces';\n\nexport const VM_HELPER_OP = 16 satisfies VmHelper;\nexport const VM_SET_NAMED_VARIABLES_OP = 17 satisfies VmSetNamedVariables;\nexport const VM_SET_BLOCKS_OP = 18 satisfies VmSetBlocks;\nexport const VM_SET_VARIABLE_OP = 19 satisfies VmSetVariable;\nexport const VM_SET_BLOCK_OP = 20 satisfies VmSetBlock;\nexport const VM_GET_VARIABLE_OP = 21 satisfies VmGetVariable;\nexport const VM_GET_PROPERTY_OP = 22 satisfies VmGetProperty;\nexport const VM_GET_BLOCK_OP = 23 satisfies VmGetBlock;\nexport const VM_SPREAD_BLOCK_OP = 24 satisfies VmSpreadBlock;\nexport const VM_HAS_BLOCK_OP = 25 satisfies VmHasBlock;\nexport const VM_HAS_BLOCK_PARAMS_OP = 26 satisfies VmHasBlockParams;\nexport const VM_CONCAT_OP = 27 satisfies VmConcat;\nexport const VM_CONSTANT_OP = 28 satisfies VmConstant;\nexport const VM_CONSTANT_REFERENCE_OP = 29 satisfies VmConstantReference;\nexport const VM_PRIMITIVE_OP = 30 satisfies VmPrimitive;\nexport const VM_PRIMITIVE_REFERENCE_OP = 31 satisfies VmPrimitiveReference;\nexport const VM_REIFY_U32_OP = 32 satisfies VmReifyU32;\nexport const VM_DUP_OP = 33 satisfies VmDup;\nexport const VM_POP_OP = 34 satisfies VmPop;\nexport const VM_LOAD_OP = 35 satisfies VmLoad;\nexport const VM_FETCH_OP = 36 satisfies VmFetch;\nexport const VM_ROOT_SCOPE_OP = 37 satisfies VmRootScope;\nexport const VM_VIRTUAL_ROOT_SCOPE_OP = 38 satisfies VmVirtualRootScope;\nexport const VM_CHILD_SCOPE_OP = 39 satisfies VmChildScope;\nexport const VM_POP_SCOPE_OP = 40 satisfies VmPopScope;\nexport const VM_TEXT_OP = 41 satisfies VmText;\nexport const VM_COMMENT_OP = 42 satisfies VmComment;\nexport const VM_APPEND_HTML_OP = 43 satisfies VmAppendHTML;\nexport const VM_APPEND_SAFE_HTML_OP = 44 satisfies VmAppendSafeHTML;\nexport const VM_APPEND_DOCUMENT_FRAGMENT_OP = 45 satisfies VmAppendDocumentFragment;\nexport const VM_APPEND_NODE_OP = 46 satisfies VmAppendNode;\nexport const VM_APPEND_TEXT_OP = 47 satisfies VmAppendText;\nexport const VM_OPEN_ELEMENT_OP = 48 satisfies VmOpenElement;\nexport const VM_OPEN_DYNAMIC_ELEMENT_OP = 49 satisfies VmOpenDynamicElement;\nexport const VM_PUSH_REMOTE_ELEMENT_OP = 50 satisfies VmPushRemoteElement;\nexport const VM_STATIC_ATTR_OP = 51 satisfies VmStaticAttr;\nexport const VM_DYNAMIC_ATTR_OP = 52 satisfies VmDynamicAttr;\nexport const VM_COMPONENT_ATTR_OP = 53 satisfies VmComponentAttr;\nexport const VM_FLUSH_ELEMENT_OP = 54 satisfies VmFlushElement;\nexport const VM_CLOSE_ELEMENT_OP = 55 satisfies VmCloseElement;\nexport const VM_POP_REMOTE_ELEMENT_OP = 56 satisfies VmPopRemoteElement;\nexport const VM_MODIFIER_OP = 57 satisfies VmModifier;\nexport const VM_BIND_DYNAMIC_SCOPE_OP = 58 satisfies VmBindDynamicScope;\nexport const VM_PUSH_DYNAMIC_SCOPE_OP = 59 satisfies VmPushDynamicScope;\nexport const VM_POP_DYNAMIC_SCOPE_OP = 60 satisfies VmPopDynamicScope;\nexport const VM_COMPILE_BLOCK_OP = 61 satisfies VmCompileBlock;\nexport const VM_PUSH_BLOCK_SCOPE_OP = 62 satisfies VmPushBlockScope;\nexport const VM_PUSH_SYMBOL_TABLE_OP = 63 satisfies VmPushSymbolTable;\nexport const VM_INVOKE_YIELD_OP = 64 satisfies VmInvokeYield;\nexport const VM_JUMP_IF_OP = 65 satisfies VmJumpIf;\nexport const VM_JUMP_UNLESS_OP = 66 satisfies VmJumpUnless;\nexport const VM_JUMP_EQ_OP = 67 satisfies VmJumpEq;\nexport const VM_ASSERT_SAME_OP = 68 satisfies VmAssertSame;\nexport const VM_ENTER_OP = 69 satisfies VmEnter;\nexport const VM_EXIT_OP = 70 satisfies VmExit;\nexport const VM_TO_BOOLEAN_OP = 71 satisfies VmToBoolean;\nexport const VM_ENTER_LIST_OP = 72 satisfies VmEnterList;\nexport const VM_EXIT_LIST_OP = 73 satisfies VmExitList;\nexport const VM_ITERATE_OP = 74 satisfies VmIterate;\nexport const VM_MAIN_OP = 75 satisfies VmMain;\nexport const VM_CONTENT_TYPE_OP = 76 satisfies VmContentType;\nexport const VM_CURRY_OP = 77 satisfies VmCurry;\nexport const VM_PUSH_COMPONENT_DEFINITION_OP = 78 satisfies VmPushComponentDefinition;\nexport const VM_PUSH_DYNAMIC_COMPONENT_INSTANCE_OP = 79 satisfies VmPushDynamicComponentInstance;\nexport const VM_RESOLVE_DYNAMIC_COMPONENT_OP = 80 satisfies VmResolveDynamicComponent;\nexport const VM_RESOLVE_CURRIED_COMPONENT_OP = 81 satisfies VmResolveCurriedComponent;\nexport const VM_PUSH_ARGS_OP = 82 satisfies VmPushArgs;\nexport const VM_PUSH_EMPTY_ARGS_OP = 83 satisfies VmPushEmptyArgs;\nexport const VM_POP_ARGS_OP = 84 satisfies VmPopArgs;\nexport const VM_PREPARE_ARGS_OP = 85 satisfies VmPrepareArgs;\nexport const VM_CAPTURE_ARGS_OP = 86 satisfies VmCaptureArgs;\nexport const VM_CREATE_COMPONENT_OP = 87 satisfies VmCreateComponent;\nexport const VM_REGISTER_COMPONENT_DESTRUCTOR_OP = 88 satisfies VmRegisterComponentDestructor;\nexport const VM_PUT_COMPONENT_OPERATIONS_OP = 89 satisfies VmPutComponentOperations;\nexport const VM_GET_COMPONENT_SELF_OP = 90 satisfies VmGetComponentSelf;\nexport const VM_GET_COMPONENT_TAG_NAME_OP = 91 satisfies VmGetComponentTagName;\nexport const VM_GET_COMPONENT_LAYOUT_OP = 92 satisfies VmGetComponentLayout;\nexport const VM_POPULATE_LAYOUT_OP = 95 satisfies VmPopulateLayout;\nexport const VM_INVOKE_COMPONENT_LAYOUT_OP = 96 satisfies VmInvokeComponentLayout;\nexport const VM_BEGIN_COMPONENT_TRANSACTION_OP = 97 satisfies VmBeginComponentTransaction;\nexport const VM_COMMIT_COMPONENT_TRANSACTION_OP = 98 satisfies VmCommitComponentTransaction;\nexport const VM_DID_CREATE_ELEMENT_OP = 99 satisfies VmDidCreateElement;\nexport const VM_DID_RENDER_LAYOUT_OP = 100 satisfies VmDidRenderLayout;\nexport const VM_DEBUGGER_OP = 103 satisfies VmDebugger;\nexport const VM_STATIC_COMPONENT_ATTR_OP = 105 satisfies VmStaticComponentAttr;\nexport const VM_DYNAMIC_CONTENT_TYPE_OP = 106 satisfies VmDynamicContentType;\nexport const VM_DYNAMIC_HELPER_OP = 107 satisfies VmDynamicHelper;\nexport const VM_DYNAMIC_MODIFIER_OP = 108 satisfies VmDynamicModifier;\nexport const VM_IF_INLINE_OP = 109 satisfies VmIfInline;\nexport const VM_NOT_OP = 110 satisfies VmNot;\nexport const VM_GET_DYNAMIC_VAR_OP = 111 satisfies VmGetDynamicVar;\nexport const VM_LOG_OP = 112 satisfies VmLog;\nexport const VM_SYSCALL_SIZE = 113 satisfies VmSize;\n\nexport function isOp(value: number): value is VmOp {\n return value >= 16;\n}\n","import type {\n VmMachineInvokeStatic,\n VmMachineInvokeVirtual,\n VmMachineJump,\n VmMachineOp,\n VmMachinePopFrame,\n VmMachinePushFrame,\n VmMachineReturn,\n VmMachineReturnTo,\n VmMachineSize,\n} from '@glimmer/interfaces';\n\nexport const VM_PUSH_FRAME_OP = 0 satisfies VmMachinePushFrame;\nexport const VM_POP_FRAME_OP = 1 satisfies VmMachinePopFrame;\nexport const VM_INVOKE_VIRTUAL_OP = 2 satisfies VmMachineInvokeVirtual;\nexport const VM_INVOKE_STATIC_OP = 3 satisfies VmMachineInvokeStatic;\nexport const VM_JUMP_OP = 4 satisfies VmMachineJump;\nexport const VM_RETURN_OP = 5 satisfies VmMachineReturn;\nexport const VM_RETURN_TO_OP = 6 satisfies VmMachineReturnTo;\nexport const VM_MACHINE_SIZE = 7 satisfies VmMachineSize;\n\nexport function isMachineOp(value: number): value is VmMachineOp {\n return value >= 0 && value <= 15;\n}\n","/**\n * This constant exists to make it easier to differentiate normal logs from\n * errant console.logs. LOCAL_LOGGER should only be used inside a\n * LOCAL_TRACE_LOGGING check.\n *\n * It does not alleviate the need to check LOCAL_TRACE_LOGGING, which is used\n * for stripping.\n */\nexport const LOCAL_LOGGER = console;\n\n/**\n * This constant exists to make it easier to differentiate normal logs from\n * errant console.logs. LOGGER can be used outside of LOCAL_TRACE_LOGGING checks,\n * and is meant to be used in the rare situation where a console.* call is\n * actually appropriate.\n */\nexport const LOGGER = console;\n","export const EMPTY_ARRAY: readonly unknown[] = Object.freeze([]) as readonly unknown[];\n\nexport function emptyArray<T>(): T[] {\n return EMPTY_ARRAY as T[];\n}\n\nexport const EMPTY_STRING_ARRAY = emptyArray<string>();\nexport const EMPTY_NUMBER_ARRAY = emptyArray<number>();\n\n/**\n * This function returns `true` if the input array is the special empty array sentinel,\n * which is sometimes used for optimizations.\n */\nexport function isEmptyArray(input: unknown[] | readonly unknown[]): boolean {\n return input === EMPTY_ARRAY;\n}\n\nexport function* reverse<T>(input: T[]): IterableIterator<T> {\n for (let i = input.length - 1; i >= 0; i--) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme\n yield input[i]!;\n }\n}\n\nexport function* enumerate<T>(input: Iterable<T>): IterableIterator<[number, T]> {\n let i = 0;\n for (const item of input) {\n yield [i++, item];\n }\n}\n\ntype ZipEntry<T extends readonly unknown[]> = {\n [P in keyof T]: P extends `${infer N extends number}` ? [N, T[P], T[P]] : never;\n}[keyof T & number];\n\n/**\n * Zip two tuples with the same type and number of elements.\n */\nexport function* zipTuples<T extends readonly unknown[]>(\n left: T,\n right: T\n): IterableIterator<ZipEntry<T>> {\n for (let i = 0; i < left.length; i++) {\n yield [i, left[i], right[i]] as ZipEntry<T>;\n }\n}\n\nexport function* zipArrays<T>(\n left: T[],\n right: T[]\n): IterableIterator<\n ['retain', number, T, T] | ['pop', number, T, undefined] | ['push', number, undefined, T]\n> {\n for (let i = 0; i < left.length; i++) {\n const perform = i < right.length ? 'retain' : 'pop';\n yield [perform, i, left[i], right[i]] as\n | ['retain', number, T, T]\n | ['pop', number, T, undefined];\n }\n\n for (let i = left.length; i < right.length; i++) {\n yield ['push', i, undefined, right[i]] as ['push', number, undefined, T];\n }\n}\n","import type { Dict, Nullable, Stack } from '@glimmer/interfaces';\nimport { getLast, unwrap } from '@glimmer/debug-util';\n\nexport function dict<T = unknown>(): Dict<T> {\n return Object.create(null) as Dict<T>;\n}\n\nexport function isDict<T>(u: T): u is Dict & T {\n return u !== null && u !== undefined;\n}\n\nexport function isIndexable<T>(u: T): u is object & T {\n return typeof u === 'function' || (typeof u === 'object' && u !== null);\n}\n\nexport class StackImpl<T> implements Stack<T> {\n private stack: T[];\n public current: Nullable<T> = null;\n\n constructor(values: T[] = []) {\n this.stack = values;\n }\n\n public get size() {\n return this.stack.length;\n }\n\n push(item: T) {\n this.current = item;\n this.stack.push(item);\n }\n\n pop(): Nullable<T> {\n let item = this.stack.pop();\n this.current = getLast(this.stack) ?? null;\n\n return item === undefined ? null : item;\n }\n\n nth(from: number): Nullable<T> {\n let len = this.stack.length;\n return len < from ? null : unwrap(this.stack[len - from]);\n }\n\n isEmpty(): boolean {\n return this.stack.length === 0;\n }\n\n snapshot(): T[] {\n return [...this.stack];\n }\n\n toArray(): T[] {\n return this.stack;\n }\n}\n","/// <reference types=\"qunit\" />\n\nimport { expect, localAssert } from '@glimmer/debug-util';\nimport { LOCAL_DEBUG, LOCAL_TRACE_LOGGING } from '@glimmer/local-debug-flags';\n\nimport { LOCAL_LOGGER } from './local-logger';\n\nexport let beginTestSteps: (() => void) | undefined;\nexport let endTestSteps: (() => void) | undefined;\n\nexport let verifySteps:\n | ((type: string, steps: unknown[] | ((steps: unknown[]) => void), message?: string) => void)\n | undefined;\nexport let logStep: ((type: string, steps: unknown) => void) | undefined;\n\nif (LOCAL_DEBUG) {\n let LOGGED_STEPS: Record<string, unknown[]> | null = null;\n\n beginTestSteps = () => {\n localAssert(LOGGED_STEPS === null, 'attempted to start steps, but it already began');\n\n LOGGED_STEPS = {};\n };\n\n endTestSteps = () => {\n localAssert(LOGGED_STEPS, 'attempted to end steps, but they were not started');\n\n LOGGED_STEPS = null;\n };\n\n logStep = (type: string, step: unknown) => {\n if (LOCAL_TRACE_LOGGING) {\n LOCAL_LOGGER.log('STEP', type, step);\n }\n\n if (LOGGED_STEPS === null) return;\n\n let steps = LOGGED_STEPS[type];\n if (!steps) steps = LOGGED_STEPS[type] = [];\n\n steps.push(step);\n };\n\n verifySteps = (\n type: string,\n expectedSteps: unknown[] | ((steps: unknown[]) => void),\n message?: string\n ) => {\n let loggedSteps = expect(LOGGED_STEPS, 'attempetd to verify steps, but steps were not started');\n\n let steps = loggedSteps[type] || [];\n\n loggedSteps[type] = [];\n\n if (Array.isArray(expectedSteps)) {\n getCurrent().assert.deepEqual(steps, expectedSteps, message);\n } else {\n expectedSteps(steps);\n }\n };\n\n function getCurrent(): QUnit {\n return QUnit.config.current as QUnit;\n }\n}\n","import type { Nullable, SimpleElement, SimpleNode } from '@glimmer/interfaces';\n\nexport function clearElement(parent: SimpleElement) {\n let current: Nullable<SimpleNode> = parent.firstChild;\n\n while (current) {\n let next = current.nextSibling;\n parent.removeChild(current);\n current = next;\n }\n}\n","/**\n Strongly hint runtimes to intern the provided string.\n\n When do I need to use this function?\n\n For the most part, never. Pre-mature optimization is bad, and often the\n runtime does exactly what you need it to, and more often the trade-off isn't\n worth it.\n\n Why?\n\n Runtimes store strings in at least 2 different representations:\n Ropes and Symbols (interned strings). The Rope provides a memory efficient\n data-structure for strings created from concatenation or some other string\n manipulation like splitting.\n\n Unfortunately checking equality of different ropes can be quite costly as\n runtimes must resort to clever string comparison algorithms. These\n algorithms typically cost in proportion to the length of the string.\n Luckily, this is where the Symbols (interned strings) shine. As Symbols are\n unique by their string content, equality checks can be done by pointer\n comparison.\n\n How do I know if my string is a rope or symbol?\n\n Typically (warning general sweeping statement, but truthy in runtimes at\n present) static strings created as part of the JS source are interned.\n Strings often used for comparisons can be interned at runtime if some\n criteria are met. One of these criteria can be the size of the entire rope.\n For example, in chrome 38 a rope longer then 12 characters will not\n intern, nor will segments of that rope.\n\n Some numbers: http://jsperf.com/eval-vs-keys/8\n\n Known Trick™\n\n @private\n @return {String} interned version of the provided string\n*/\nexport default function intern(str: string): string {\n let obj: Record<string, number> = {};\n obj[str] = 1;\n for (let key in obj) {\n if (key === str) {\n return key;\n }\n }\n return str;\n}\n","import type { SimpleNode } from '@glimmer/interfaces';\n\nexport const SERIALIZATION_FIRST_NODE_STRING = '%+b:0%';\n\nexport function isSerializationFirstNode(node: SimpleNode): boolean {\n return node.nodeValue === SERIALIZATION_FIRST_NODE_STRING;\n}\n","export const assign = Object.assign;\n\nexport function values<T>(obj: { [s: string]: T }): T[] {\n return Object.values(obj);\n}\n\nexport type ObjectEntry<D extends object> = { [P in keyof D]: [P, D[P]] }[keyof D];\n\nexport function entries<D extends object>(dict: D): ObjectEntry<D>[] {\n return Object.entries(dict) as ObjectEntry<D>[];\n}\n\nexport function keys<T extends object>(obj: T): (keyof T)[] {\n return Object.keys(obj) as (keyof T)[];\n}\n","import { getFirst, getLast, isPresentArray } from '@glimmer/debug-util';\n\nimport { enumerate } from './array-utils';\n\nexport function strip(strings: TemplateStringsArray, ...args: unknown[]) {\n let out = '';\n for (const [i, string] of enumerate(strings)) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string -- @fixme\n let dynamic = args[i] !== undefined ? String(args[i]) : '';\n\n out += `${string}${dynamic}`;\n }\n\n let lines = out.split('\\n');\n\n while (isPresentArray(lines) && /^\\s*$/u.test(getFirst(lines))) {\n lines.shift();\n }\n\n while (isPresentArray(lines) && /^\\s*$/u.test(getLast(lines))) {\n lines.pop();\n }\n\n let min = Infinity;\n\n for (let line of lines) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme\n let leading = /^\\s*/u.exec(line)![0].length;\n\n min = Math.min(min, leading);\n }\n\n let stripped = [];\n\n for (let line of lines) {\n stripped.push(line.slice(min));\n }\n\n return stripped.join('\\n');\n}\n","import { LOCAL_LOGGER, LOGGER } from './lib/local-logger';\nexport * from './lib/array-utils';\nexport { dict, isDict, isIndexable, StackImpl as Stack } from './lib/collections';\nexport { beginTestSteps, endTestSteps, logStep, verifySteps } from './lib/debug-steps';\nexport * from './lib/dom';\nexport { default as intern } from './lib/intern';\nexport {\n isSerializationFirstNode,\n SERIALIZATION_FIRST_NODE_STRING,\n} from './lib/is-serialization-first-node';\nexport { assign, entries, keys, values } from './lib/object-utils';\nexport * from './lib/string';\n\nexport type FIXME<T, S extends string> = (T & S) | T;\n\nexport { LOCAL_LOGGER, LOGGER };\n\nexport function assertNever(value: never, desc = 'unexpected unreachable branch'): never {\n LOGGER.log('unreachable', value);\n LOGGER.log(`${desc} :: ${JSON.stringify(value)} (${value})`);\n\n throw new Error(`code reached unreachable`);\n}\n","import type {\n AppendOpcode,\n AttrSplatOpcode,\n BlockOpcode,\n CallOpcode,\n CloseElementOpcode,\n CommentOpcode,\n ComponentAttrOpcode,\n ComponentOpcode,\n ConcatOpcode,\n CurryOpcode,\n DebuggerOpcode,\n DynamicArgOpcode,\n DynamicAttrOpcode,\n EachOpcode,\n FlushElementOpcode,\n GetDynamicVarOpcode,\n GetFreeAsComponentHeadOpcode,\n GetFreeAsComponentOrHelperHeadOpcode,\n GetFreeAsHelperHeadOpcode,\n GetFreeAsModifierHeadOpcode,\n GetLexicalSymbolOpcode,\n GetStrictKeywordOpcode,\n GetSymbolOpcode,\n HasBlockOpcode,\n HasBlockParamsOpcode,\n IfInlineOpcode,\n IfOpcode,\n InElementOpcode,\n InvokeComponentOpcode,\n LetOpcode,\n LogOpcode,\n ModifierOpcode,\n NotOpcode,\n OpenElementOpcode,\n OpenElementWithSplatOpcode,\n StaticArgOpcode,\n StaticAttrOpcode,\n StaticComponentAttrOpcode,\n StrictBlockOpcode,\n StrictModifierOpcode,\n TrustingAppendOpcode,\n TrustingComponentAttrOpcode,\n TrustingDynamicAttrOpcode,\n UndefinedOpcode,\n WithDynamicVarsOpcode,\n YieldOpcode,\n} from '@glimmer/interfaces';\n\nexport const opcodes = {\n Append: 1 satisfies AppendOpcode,\n TrustingAppend: 2 satisfies TrustingAppendOpcode,\n Comment: 3 satisfies CommentOpcode,\n Modifier: 4 satisfies ModifierOpcode,\n StrictModifier: 5 satisfies StrictModifierOpcode,\n Block: 6 satisfies BlockOpcode,\n StrictBlock: 7 satisfies StrictBlockOpcode,\n Component: 8 satisfies ComponentOpcode,\n OpenElement: 10 satisfies OpenElementOpcode,\n OpenElementWithSplat: 11 satisfies OpenElementWithSplatOpcode,\n FlushElement: 12 satisfies FlushElementOpcode,\n CloseElement: 13 satisfies CloseElementOpcode,\n StaticAttr: 14 satisfies StaticAttrOpcode,\n DynamicAttr: 15 satisfies DynamicAttrOpcode,\n ComponentAttr: 16 satisfies ComponentAttrOpcode,\n AttrSplat: 17 satisfies AttrSplatOpcode,\n Yield: 18 satisfies YieldOpcode,\n DynamicArg: 20 satisfies DynamicArgOpcode,\n StaticArg: 21 satisfies StaticArgOpcode,\n TrustingDynamicAttr: 22 satisfies TrustingDynamicAttrOpcode,\n TrustingComponentAttr: 23 satisfies TrustingComponentAttrOpcode,\n StaticComponentAttr: 24 satisfies StaticComponentAttrOpcode,\n Debugger: 26 satisfies DebuggerOpcode,\n Undefined: 27 satisfies UndefinedOpcode,\n Call: 28 satisfies CallOpcode,\n Concat: 29 satisfies ConcatOpcode,\n GetSymbol: 30 satisfies GetSymbolOpcode,\n GetLexicalSymbol: 32 satisfies GetLexicalSymbolOpcode,\n GetStrictKeyword: 31 satisfies GetStrictKeywordOpcode,\n GetFreeAsComponentOrHelperHead: 35 satisfies GetFreeAsComponentOrHelperHeadOpcode,\n GetFreeAsHelperHead: 37 satisfies GetFreeAsHelperHeadOpcode,\n GetFreeAsModifierHead: 38 satisfies GetFreeAsModifierHeadOpcode,\n GetFreeAsComponentHead: 39 satisfies GetFreeAsComponentHeadOpcode,\n InElement: 40 satisfies InElementOpcode,\n If: 41 satisfies IfOpcode,\n Each: 42 satisfies EachOpcode,\n Let: 44 satisfies LetOpcode,\n WithDynamicVars: 45 satisfies WithDynamicVarsOpcode,\n InvokeComponent: 46 satisfies InvokeComponentOpcode,\n HasBlock: 48 satisfies HasBlockOpcode,\n HasBlockParams: 49 satisfies HasBlockParamsOpcode,\n Curry: 50 satisfies CurryOpcode,\n Not: 51 satisfies NotOpcode,\n IfInline: 52 satisfies IfInlineOpcode,\n GetDynamicVar: 53 satisfies GetDynamicVarOpcode,\n Log: 54 satisfies LogOpcode,\n} as const;\n","import type {\n ResolveAsComponentHeadResolution,\n ResolveAsComponentOrHelperHeadResolution,\n ResolveAsHelperHeadResolution,\n ResolveAsModifierHeadResolution,\n StrictResolution,\n} from '@glimmer/interfaces';\n\nexport type resolution =\n | ResolveAsComponentOrHelperHeadResolution\n | ResolveAsHelperHeadResolution\n | ResolveAsComponentHeadResolution\n | ResolveAsModifierHeadResolution\n | StrictResolution;\n\nexport const resolution = {\n Strict: 0 satisfies StrictResolution,\n ResolveAsComponentOrHelperHead: 1 satisfies ResolveAsComponentOrHelperHeadResolution,\n ResolveAsHelperHead: 5 satisfies ResolveAsHelperHeadResolution,\n ResolveAsModifierHead: 6 satisfies ResolveAsModifierHeadResolution,\n ResolveAsComponentHead: 7 satisfies ResolveAsComponentHeadResolution,\n} as const;\n","import type {\n ATag,\n ClassAttr,\n DivTag,\n HrefAttr,\n IdAttr,\n NameAttr,\n PTag,\n SpanTag,\n StyleAttr,\n TypeAttr,\n ValueAttr,\n} from '@glimmer/interfaces';\n\nexport const WellKnownAttrNames = {\n class: 0 satisfies ClassAttr,\n id: 1 satisfies IdAttr,\n value: 2 satisfies ValueAttr,\n name: 3 satisfies NameAttr,\n type: 4 satisfies TypeAttr,\n style: 5 satisfies StyleAttr,\n href: 6 satisfies HrefAttr,\n} as const;\n\nexport const WellKnownTagNames = {\n div: 0 satisfies DivTag,\n span: 1 satisfies SpanTag,\n p: 2 satisfies PTag,\n a: 3 satisfies ATag,\n} as const;\n","import type { Expression, Expressions, Statement, Statements } from '@glimmer/interfaces';\n\nimport { opcodes } from './lib/opcodes';\n\nexport { opcodes as SexpOpcodes } from './lib/opcodes';\nexport { resolution as VariableResolutionContext } from './lib/resolution';\nexport { WellKnownAttrNames, WellKnownTagNames } from './lib/well-known';\n\nexport function is<T>(variant: number): (value: unknown) => value is T {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (value: any): value is T {\n return Array.isArray(value) && value[0] === variant;\n };\n}\n\n// Statements\nexport const isFlushElement = is<Statements.FlushElement>(opcodes.FlushElement);\n\nexport function isAttribute(val: Statement): val is Statements.Attribute {\n return (\n val[0] === opcodes.StaticAttr ||\n val[0] === opcodes.DynamicAttr ||\n val[0] === opcodes.TrustingDynamicAttr ||\n val[0] === opcodes.ComponentAttr ||\n val[0] === opcodes.StaticComponentAttr ||\n val[0] === opcodes.TrustingComponentAttr ||\n val[0] === opcodes.AttrSplat ||\n val[0] === opcodes.Modifier\n );\n}\n\nexport function isStringLiteral(expr: Expression): expr is Expressions.StringValue {\n return typeof expr === 'string';\n}\n\nexport function getStringFromValue(expr: Expressions.StringValue): string {\n return expr;\n}\n\nexport function isArgument(val: Statement): val is Statements.Argument {\n return val[0] === opcodes.StaticArg || val[0] === opcodes.DynamicArg;\n}\n\nexport function isHelper(expr: Expression): expr is Expressions.Helper {\n return Array.isArray(expr) && expr[0] === opcodes.Call;\n}\n\n// Expressions\nexport const isGet = is<Expressions.GetSymbol>(opcodes.GetSymbol);\n","import type { VariableKind } from '@glimmer/constants';\nimport type { Dict, DictValue, Nullable, PresentArray } from '@glimmer/interfaces';\nimport {\n APPEND_EXPR_HEAD,\n APPEND_PATH_HEAD,\n ARG_VAR,\n BLOCK_HEAD,\n BLOCK_VAR,\n BUILDER_APPEND,\n BUILDER_COMMENT,\n BUILDER_CONCAT,\n BUILDER_DYNAMIC_COMPONENT,\n BUILDER_GET,\n BUILDER_HAS_BLOCK,\n BUILDER_HAS_BLOCK_PARAMS,\n BUILDER_LITERAL,\n BUILDER_MODIFIER,\n CALL_EXPR,\n CALL_HEAD,\n COMMENT_HEAD,\n CONCAT_EXPR,\n DYNAMIC_COMPONENT_HEAD,\n ELEMENT_HEAD,\n FREE_VAR,\n GET_PATH_EXPR,\n GET_VAR_EXPR,\n HAS_BLOCK_EXPR,\n HAS_BLOCK_PARAMS_EXPR,\n KEYWORD_HEAD,\n LITERAL_EXPR,\n LITERAL_HEAD,\n LOCAL_VAR,\n MODIFIER_HEAD,\n SPLAT_HEAD,\n THIS_VAR,\n} from '@glimmer/constants';\nimport { expect, isPresentArray } from '@glimmer/debug-util';\nimport { assertNever, dict } from '@glimmer/util';\n\nexport type BuilderParams = BuilderExpression[];\nexport type BuilderHash = Nullable<Dict<BuilderExpression>>;\nexport type BuilderBlockHash = BuilderHash | { as: string | string[] };\nexport type BuilderBlocks = Dict<BuilderBlock>;\nexport type BuilderAttrs = Dict<BuilderAttr>;\n\nexport type NormalizedParams = NormalizedExpression[];\nexport type NormalizedHash = Dict<NormalizedExpression>;\nexport type NormalizedBlock = NormalizedStatement[];\nexport type NormalizedBlocks = Dict<NormalizedBlock>;\nexport type NormalizedAttrs = Dict<NormalizedAttr>;\nexport type NormalizedAttr = SPLAT_HEAD | NormalizedExpression;\n\nexport interface NormalizedElement {\n name: string;\n attrs: Nullable<NormalizedAttrs>;\n block: Nullable<NormalizedBlock>;\n}\n\nexport interface NormalizedAngleInvocation {\n head: NormalizedExpression;\n attrs: Nullable<NormalizedAttrs>;\n block: Nullable<NormalizedBlock>;\n}\n\nexport interface Variable {\n kind: VariableKind;\n name: string;\n /**\n * Differences:\n *\n * - strict mode variables always refer to in-scope variables\n * - loose mode variables use this algorithm:\n * 1. otherwise, fall back to `this.<name>`\n */\n mode: 'loose' | 'strict';\n}\n\nexport interface Path {\n head: Variable;\n tail: PresentArray<string>;\n}\n\nexport interface AppendExpr {\n kind: APPEND_EXPR_HEAD;\n expr: NormalizedExpression;\n trusted: boolean;\n}\n\nexport interface AppendPath {\n kind: APPEND_PATH_HEAD;\n path: NormalizedPath;\n trusted: boolean;\n}\n\nexport interface NormalizedKeywordStatement {\n kind: KEYWORD_HEAD;\n name: string;\n params: Nullable<NormalizedParams>;\n hash: Nullable<NormalizedHash>;\n blockParams: Nullable<string[]>;\n blocks: NormalizedBlocks;\n}\n\nexport type NormalizedStatement =\n | {\n kind: CALL_HEAD;\n head: NormalizedHead;\n params: Nullable<NormalizedParams>;\n hash: Nullable<NormalizedHash>;\n trusted: boolean;\n }\n | {\n kind: BLOCK_HEAD;\n head: NormalizedHead;\n params: Nullable<NormalizedParams>;\n hash: Nullable<NormalizedHash>;\n blockParams: Nullable<string[]>;\n blocks: NormalizedBlocks;\n }\n | NormalizedKeywordStatement\n | {\n kind: ELEMENT_HEAD;\n name: string;\n attrs: NormalizedAttrs;\n block: NormalizedBlock;\n }\n | { kind: COMMENT_HEAD; value: string }\n | { kind: LITERAL_HEAD; value: string }\n | AppendPath\n | AppendExpr\n | { kind: MODIFIER_HEAD; params: NormalizedParams; hash: Nullable<NormalizedHash> }\n | {\n kind: DYNAMIC_COMPONENT_HEAD;\n expr: NormalizedExpression;\n hash: Nullable<NormalizedHash>;\n block: NormalizedBlock;\n };\n\nexport function normalizeStatement(statement: BuilderStatement): NormalizedStatement {\n if (Array.isArray(statement)) {\n if (statementIsExpression(statement)) {\n return normalizeAppendExpression(statement);\n } else if (isSugaryArrayStatement(statement)) {\n return normalizeSugaryArrayStatement(statement);\n } else {\n return normalizeVerboseStatement(statement);\n }\n } else if (typeof statement === 'string') {\n return normalizeAppendHead(normalizeDottedPath(statement), false);\n } else {\n assertNever(statement);\n }\n}\n\nexport function normalizeAppendHead(\n head: NormalizedHead,\n trusted: boolean\n): AppendExpr | AppendPath {\n if (head.type === GET_PATH_EXPR) {\n return {\n kind: APPEND_PATH_HEAD,\n path: head,\n trusted,\n };\n } else {\n return {\n kind: APPEND_EXPR_HEAD,\n expr: head,\n trusted,\n };\n }\n}\n\nfunction isSugaryArrayStatement(statement: BuilderStatement): statement is SugaryArrayStatement {\n if (Array.isArray(statement) && typeof statement[0] === 'string') {\n switch (statement[0][0]) {\n case '(':\n case '#':\n case '<':\n case '!':\n return true;\n default:\n return false;\n }\n }\n\n return false;\n}\n\nexport type SugaryArrayStatement = BuilderCallExpression | BuilderElement | BuilderBlockStatement;\n\nexport function normalizeSugaryArrayStatement(\n statement: SugaryArrayStatement\n): NormalizedStatement {\n const name = statement[0];\n\n switch (name[0]) {\n case '(': {\n let params: Nullable<NormalizedParams> = null;\n let hash: Nullable<NormalizedHash> = null;\n\n if (statement.length === 3) {\n params = normalizeParams(statement[1] as Params);\n hash = normalizeHash(statement[2] as Hash);\n } else if (statement.length === 2) {\n if (Array.isArray(statement[1])) {\n params = normalizeParams(statement[1] as Params);\n } else {\n hash = normalizeHash(statement[1] as Hash);\n }\n }\n\n return {\n kind: CALL_HEAD,\n head: normalizeCallHead(name),\n params,\n hash,\n trusted: false,\n };\n }\n\n case '#': {\n const {\n head: path,\n params,\n hash,\n blocks,\n blockParams,\n } = normalizeBuilderBlockStatement(statement as BuilderBlockStatement);\n\n return {\n kind: BLOCK_HEAD,\n head: path,\n params,\n hash,\n blocks,\n blockParams,\n };\n }\n\n case '!': {\n const name = statement[0].slice(1);\n const { params, hash, blocks, blockParams } = normalizeBuilderBlockStatement(\n statement as BuilderBlockStatement\n );\n\n return {\n kind: KEYWORD_HEAD,\n name,\n params,\n hash,\n blocks,\n blockParams,\n };\n }\n\n case '<': {\n let attrs: NormalizedAttrs = dict();\n let block: NormalizedBlock = [];\n\n if (statement.length === 3) {\n attrs = normalizeAttrs(statement[1] as BuilderAttrs);\n block = normalizeBlock(statement[2] as BuilderBlock);\n } else if (statement.length === 2) {\n if (Array.isArray(statement[1])) {\n block = normalizeBlock(statement[1] as BuilderBlock);\n } else {\n attrs = normalizeAttrs(statement[1] as BuilderAttrs);\n }\n }\n\n return {\n kind: ELEMENT_HEAD,\n name: expect(extractElement(name), `BUG: expected ${name} to look like a tag name`),\n attrs,\n block,\n };\n }\n\n default:\n throw new Error(`Unreachable ${JSON.stringify(statement)} in normalizeSugaryArrayStatement`);\n }\n}\n\nfunction normalizeVerboseStatement(statement: VerboseStatement): NormalizedStatement {\n switch (statement[0]) {\n case BUILDER_LITERAL: {\n return {\n kind: LITERAL_HEAD,\n value: statement[1],\n };\n }\n\n case BUILDER_APPEND: {\n return normalizeAppendExpression(statement[1], statement[2]);\n }\n\n case BUILDER_MODIFIER: {\n return {\n kind: MODIFIER_HEAD,\n params: normalizeParams(statement[1]),\n hash: normalizeHash(statement[2]),\n };\n }\n\n case BUILDER_DYNAMIC_COMPONENT: {\n return {\n kind: DYNAMIC_COMPONENT_HEAD,\n expr: normalizeExpression(statement[1]),\n hash: normalizeHash(statement[2]),\n block: normalizeBlock(statement[3]),\n };\n }\n\n case BUILDER_COMMENT: {\n return {\n kind: COMMENT_HEAD,\n value: statement[1],\n };\n }\n }\n}\n\nfunction extractBlockHead(name: string): NormalizedHead {\n const result = /^(#|!)(.*)$/u.exec(name);\n\n if (result === null) {\n throw new Error(`Unexpected missing # in block head`);\n }\n\n return normalizeDottedPath(result[2] as string);\n}\n\nfunction normalizeCallHead(name: string): NormalizedHead {\n const result = /^\\((.*)\\)$/u.exec(name);\n\n if (result === null) {\n throw new Error(`Unexpected missing () in call head`);\n }\n\n return normalizeDottedPath(result[1] as string);\n}\n\nfunction normalizePath(head: string, tail: string[] = []): NormalizedHead {\n const pathHead = normalizePathHead(head);\n\n if (isPresentArray(tail)) {\n return {\n type: GET_PATH_EXPR,\n path: {\n head: pathHead,\n tail,\n },\n };\n } else {\n return {\n type: GET_VAR_EXPR,\n variable: pathHead,\n };\n }\n}\n\nfunction normalizeDottedPath(whole: string): NormalizedHead {\n const { kind, name: rest } = normalizePathHead(whole);\n\n const [name, ...tail] = rest.split('.') as [string, ...string[]];\n\n const variable: Variable = { kind, name, mode: 'loose' };\n\n if (isPresentArray(tail)) {\n return { type: GET_PATH_EXPR, path: { head: variable, tail } };\n } else {\n return { type: GET_VAR_EXPR, variable };\n }\n}\n\nexport function normalizePathHead(whole: string): Variable {\n let kind: VariableKind;\n let name: string;\n\n if (/^this(?:\\.|$)/u.test(whole)) {\n return {\n kind: THIS_VAR,\n name: whole,\n mode: 'loose',\n };\n }\n\n switch (whole[0]) {\n case '^':\n kind = FREE_VAR;\n name = whole.slice(1);\n break;\n\n case '@':\n kind = ARG_VAR;\n name = whole.slice(1);\n break;\n\n case '&':\n kind = BLOCK_VAR;\n name = whole.slice(1);\n break;\n\n default:\n kind = LOCAL_VAR;\n name = whole;\n }\n\n return { kind, name, mode: 'loose' };\n}\n\nexport type BuilderBlockStatement =\n | [string, BuilderBlock | BuilderBlocks]\n | [string, BuilderParams | BuilderBlockHash, BuilderBlock | BuilderBlocks]\n | [string, BuilderParams, BuilderBlockHash, BuilderBlock | BuilderBlocks];\n\nexport interface NormalizedBuilderBlockStatement {\n head: NormalizedHead;\n params: Nullable<NormalizedParams>;\n hash: Nullable<NormalizedHash>;\n blockParams: Nullable<string[]>;\n blocks: NormalizedBlocks;\n}\n\nexport function normalizeBuilderBlockStatement(\n statement: BuilderBlockStatement\n): NormalizedBuilderBlockStatement {\n const head = statement[0];\n let blocks: NormalizedBlocks = dict();\n let params: Nullable<NormalizedParams> = null;\n let hash: Nullable<NormalizedHash> = null;\n let blockParams: Nullable<string[]> = null;\n\n if (statement.length === 2) {\n blocks = normalizeBlocks(statement[1]);\n } else if (statement.length === 3) {\n if (Array.isArray(statement[1])) {\n params = normalizeParams(statement[1]);\n } else {\n ({ hash, blockParams } = normalizeBlockHash(statement[1]));\n }\n\n blocks = normalizeBlocks(statement[2]);\n } else {\n params = normalizeParams(statement[1]);\n ({ hash, blockParams } = normalizeBlockHash(statement[2]));\n blocks = normalizeBlocks(statement[3]);\n }\n\n return {\n head: extractBlockHead(head),\n params,\n hash,\n blockParams,\n blocks,\n };\n}\n\nfunction normalizeBlockHash(hash: BuilderBlockHash): {\n hash: Nullable<NormalizedHash>;\n blockParams: Nullable<string[]>;\n} {\n if (hash === null) {\n return { hash: null, blockParams: null };\n }\n\n let out: Nullable<Dict<NormalizedExpression>> = null;\n let blockParams: Nullable<string[]> = null;\n\n entries(hash, (key, value) => {\n if (key === 'as') {\n blockParams = Array.isArray(value) ? (value as string[]) : [value as string];\n } else {\n out = out || dict();\n out[key] = normalizeExpression(value as BuilderExpression);\n }\n });\n\n return { hash: out, blockParams };\n}\n\ntype Entry<T> = {\n [K in keyof T]: [K, T[K]];\n}[keyof T];\n\nexport function entries<D extends Dict>(dict: D, callback: (...entry: Entry<D>) => void): void {\n Object.keys(dict).forEach((key) => {\n const value = dict[key];\n callback(key, value as D[keyof D]);\n });\n}\n\nfunction normalizeBlocks(value: BuilderBlock | BuilderBlocks): NormalizedBlocks {\n if (Array.isArray(value)) {\n return { default: normalizeBlock(value) };\n } else {\n return mapObject(value, normalizeBlock);\n }\n}\n\nfunction normalizeBlock(block: BuilderBlock): NormalizedBlock {\n return block.map((s) => normalizeStatement(s));\n}\n\nfunction normalizeAttrs(attrs: BuilderAttrs): NormalizedAttrs {\n return mapObject(attrs, (a) => normalizeAttr(a).expr);\n}\n\nfunction normalizeAttr(attr: BuilderAttr): { expr: NormalizedAttr; trusted: boolean } {\n if (attr === 'splat') {\n return { expr: SPLAT_HEAD, trusted: false };\n } else {\n const expr = normalizeExpression(attr);\n return { expr, trusted: false };\n }\n}\n\nfunction mapObject<T extends Dict, Out>(\n object: T,\n mapper: (value: DictValue<T>, key: keyof T) => Out\n): { [P in keyof T]: Out } {\n const out = dict() as { [P in keyof T]?: Out };\n\n Object.keys(object).forEach(<K extends keyof T>(k: K) => {\n out[k] = mapper(object[k] as DictValue<T>, k);\n });\n\n return out as { [P in keyof T]: Out };\n}\n\nexport type BuilderElement =\n | [string]\n | [string, BuilderAttrs, BuilderBlock]\n | [string, BuilderBlock]\n | [string, BuilderAttrs];\n\nexport type BuilderComment = [BUILDER_COMMENT, string];\n\nexport type InvocationElement =\n | [string]\n | [string, BuilderAttrs, BuilderBlock]\n | [string, BuilderBlock]\n | [string, BuilderAttrs];\n\nexport function isElement(input: [string, ...unknown[]]): input is BuilderElement {\n const match = /^<([\\d\\-a-z][\\d\\-A-Za-z]*)>$/u.exec(input[0]);\n\n return !!match && !!match[1];\n}\n\nexport function extractElement(input: string): Nullable<string> {\n const match = /^<([\\d\\-a-z][\\d\\-A-Za-z]*)>$/u.exec(input);\n\n return match?.[1] ?? null;\n}\n\nexport function isAngleInvocation(input: [string, ...unknown[]]): input is InvocationElement {\n // TODO Paths\n const match = /^<(@[\\dA-Za-z]*|[A-Z][\\d\\-A-Za-z]*)>$/u.exec(input[0]);\n\n return !!match && !!match[1];\n}\n\nexport function isBlock(input: [string, ...unknown[]]): input is BuilderBlockStatement {\n // TODO Paths\n const match = /^#[\\s\\S]?([\\dA-Za-z]*|[A-Z][\\d\\-A-Za-z]*)$/u.exec(input[0]);\n\n return !!match && !!match[1];\n}\n\nexport type VerboseStatement =\n | [BUILDER_LITERAL, string]\n | [BUILDER_COMMENT, string]\n | [BUILDER_APPEND, BuilderExpression, true]\n | [BUILDER_APPEND, BuilderExpression]\n | [BUILDER_MODIFIER, Params, Hash]\n | [BUILDER_DYNAMIC_COMPONENT, BuilderExpression, Hash, BuilderBlock];\n\nexport type BuilderStatement =\n | VerboseStatement\n | SugaryArrayStatement\n | TupleBuilderExpression\n | string;\n\n/**\n * The special value 'splat' is used to indicate that the attribute is a splat\n */\nexport type BuilderAttr = BuilderExpression;\n\nexport type TupleBuilderExpression =\n | [BUILDER_LITERAL, string | boolean | null | undefined]\n | [BUILDER_GET, string]\n | [BUILDER_GET, string, string[]]\n | [BUILDER_CONCAT, ...BuilderExpression[]]\n | [BUILDER_HAS_BLOCK, string]\n | [BUILDER_HAS_BLOCK_PARAMS, string]\n | BuilderCallExpression;\n\ntype Params = BuilderParams;\ntype Hash = Dict<BuilderExpression>;\n\nexport interface NormalizedCallExpression {\n type: CALL_EXPR;\n head: NormalizedHead;\n params: Nullable<NormalizedParams>;\n hash: Nullable<NormalizedHash>;\n}\n\nexport interface NormalizedPath {\n type: GET_PATH_EXPR;\n path: Path;\n}\n\nexport interface NormalizedVar {\n type: GET_VAR_EXPR;\n variable: Variable;\n}\n\nexport type NormalizedHead = NormalizedPath | NormalizedVar;\n\nexport interface NormalizedConcat {\n type: CONCAT_EXPR;\n params: [NormalizedExpression, ...NormalizedExpression[]];\n}\n\nexport type NormalizedExpression =\n | {\n type: LITERAL_EXPR;\n value: null | undefined | boolean | string | number;\n }\n | NormalizedCallExpression\n | NormalizedPath\n | NormalizedVar\n | NormalizedConcat\n | {\n type: HAS_BLOCK_EXPR;\n name: string;\n }\n | {\n type: HAS_BLOCK_PARAMS_EXPR;\n name: string;\n };\n\nexport function normalizeAppendExpression(\n expression: BuilderExpression,\n forceTrusted = false\n): AppendExpr | AppendPath {\n if (expression === null || expression === undefined) {\n return {\n expr: {\n type: LITERAL_EXPR,\n value: expression,\n },\n kind: APPEND_EXPR_HEAD,\n trusted: false,\n };\n } else if (Array.isArray(expression)) {\n switch (expression[0]) {\n case BUILDER_LITERAL:\n return {\n expr: { type: LITERAL_EXPR, value: expression[1] },\n kind: APPEND_EXPR_HEAD,\n trusted: false,\n };\n\n case BUILDER_GET: {\n return normalizeAppendHead(normalizePath(expression[1], expression[2]), forceTrusted);\n }\n case BUILDER_CONCAT: {\n const expr: NormalizedConcat = {\n type: CONCAT_EXPR,\n params: normalizeParams(expression.slice(1)) as [\n NormalizedExpression,\n ...NormalizedExpression[],\n ],\n };\n\n return {\n expr,\n kind: APPEND_EXPR_HEAD,\n trusted: forceTrusted,\n };\n }\n\n case BUILDER_HAS_BLOCK:\n return {\n expr: {\n type: HAS_BLOCK_EXPR,\n name: expression[1],\n },\n kind: APPEND_EXPR_HEAD,\n trusted: forceTrusted,\n };\n\n case BUILDER_HAS_BLOCK_PARAMS:\n return {\n expr: {\n type: HAS_BLOCK_PARAMS_EXPR,\n name: expression[1],\n },\n kind: APPEND_EXPR_HEAD,\n trusted: forceTrusted,\n };\n\n default: {\n if (isBuilderCallExpression(expression)) {\n return {\n expr: normalizeCallExpression(expression),\n kind: APPEND_EXPR_HEAD,\n trusted: forceTrusted,\n };\n } else {\n throw new Error(\n `Unexpected array in expression position (wasn't a tuple expression and ${\n expression[0] as string\n } isn't wrapped in parens, so it isn't a call): ${JSON.stringify(expression)}`\n );\n }\n }\n // BuilderCallExpression\n }\n } else if (typeof expression !== 'object') {\n switch (typeof expression) {\n case 'string': {\n return normalizeAppendHead(normalizeDottedPath(expression), forceTrusted);\n }\n case 'boolean':\n case 'number':\n return {\n expr: { type: LITERAL_EXPR, value: expression },\n kind: APPEND_EXPR_HEAD,\n trusted: true,\n };\n\n default:\n assertNever(expression);\n }\n } else {\n assertNever(expression);\n }\n}\n\nexport function normalizeExpression(expression: BuilderExpression): NormalizedExpression {\n if (expression === null || expression === undefined) {\n return {\n type: LITERAL_EXPR,\n value: expression,\n };\n } else if (Array.isArray(expression)) {\n switch (expression[0]) {\n case BUILDER_LITERAL:\n return { type: LITERAL_EXPR, value: expression[1] };\n\n case BUILDER_GET: {\n return normalizePath(expression[1], expression[2]);\n }\n case BUILDER_CONCAT: {\n const expr: NormalizedConcat = {\n type: CONCAT_EXPR,\n params: normalizeParams(expression.slice(1)) as [\n NormalizedExpression,\n ...NormalizedExpression[],\n ],\n };\n\n return expr;\n }\n\n case BUILDER_HAS_BLOCK:\n return {\n type: HAS_BLOCK_EXPR,\n name: expression[1],\n };\n\n case BUILDER_HAS_BLOCK_PARAMS:\n return {\n type: HAS_BLOCK_PARAMS_EXPR,\n name: expression[1],\n };\n\n default: {\n if (isBuilderCallExpression(expression)) {\n return normalizeCallExpression(expression);\n } else {\n throw new Error(\n `Unexpected array in expression position (wasn't a tuple expression and ${\n expression[0] as string\n } isn't wrapped in parens, so it isn't a call): ${JSON.stringify(expression)}`\n );\n }\n }\n // BuilderCallExpression\n }\n } else if (typeof expression !== 'object') {\n switch (typeof expression) {\n case 'string': {\n return normalizeDottedPath(expression);\n }\n case 'boolean':\n case 'number':\n return { type: LITERAL_EXPR, value: expression };\n\n default:\n assertNever(expression);\n }\n } else {\n assertNever(expression);\n }\n}\n\n// | [GET, string]\n// | [GET, string, string[]]\n// | [CONCAT, Params]\n// | [HAS_BLOCK, string]\n// | [HAS_BLOCK_PARAMS, string]\n\nexport type BuilderExpression =\n | TupleBuilderExpression\n | BuilderCallExpression\n | null\n | undefined\n | boolean\n | string\n | number;\n\nexport function isBuilderExpression(\n expr: BuilderExpression | BuilderCallExpression\n): expr is TupleBuilderExpression | BuilderCallExpression {\n return Array.isArray(expr);\n}\n\nexport function isLiteral(\n expr: BuilderExpression | BuilderCallExpression\n): expr is [BUILDER_LITERAL, string | boolean | undefined] {\n return Array.isArray(expr) && expr[0] === 'literal';\n}\n\nexport function statementIsExpression(\n statement: BuilderStatement\n): statement is TupleBuilderExpression {\n if (!Array.isArray(statement)) {\n return false;\n }\n\n const name = statement[0];\n\n if (typeof name === 'number') {\n switch (name) {\n case BUILDER_LITERAL:\n case BUILDER_GET:\n case BUILDER_CONCAT:\n case BUILDER_HAS_BLOCK:\n case BUILDER_HAS_BLOCK_PARAMS:\n return true;\n default:\n return false;\n }\n }\n\n if (name[0] === '(') {\n return true;\n }\n\n return false;\n}\n\nexport function isBuilderCallExpression(\n value: TupleBuilderExpression | BuilderCallExpression\n): value is BuilderCallExpression {\n return typeof value[0] === 'string' && value[0][0] === '(';\n}\n\nexport type MiniBuilderBlock = BuilderStatement[];\n\nexport type BuilderBlock = MiniBuilderBlock;\n\nexport type BuilderCallExpression = [string] | [string, Params | Hash] | [string, Params, Hash];\n\nexport function normalizeParams(input: Params): NormalizedParams {\n return input.map(normalizeExpression);\n}\n\nexport function normalizeHash(input: Nullable<Hash>): Nullable<NormalizedHash> {\n if (input === null) return null;\n return mapObject(input, normalizeExpression);\n}\n\nexport function normalizeCallExpression(expr: BuilderCallExpression): NormalizedCallExpression {\n switch (expr.length) {\n case 1:\n return {\n type: CALL_EXPR,\n head: normalizeCallHead(expr[0]),\n params: null,\n hash: null,\n };\n case 2: {\n if (Array.isArray(expr[1])) {\n return {\n type: CALL_EXPR,\n head: normalizeCallHead(expr[0]),\n params: normalizeParams(expr[1]),\n hash: null,\n };\n } else {\n return {\n type: CALL_EXPR,\n head: normalizeCallHead(expr[0]),\n params: null,\n hash: normalizeHash(expr[1]),\n };\n }\n }\n\n case 3:\n return {\n type: CALL_EXPR,\n head: normalizeCallHead(expr[0]),\n params: normalizeParams(expr[1]),\n hash: normalizeHash(expr[2]),\n };\n }\n}\n","import type { VariableKind } from '@glimmer/constants';\nimport type {\n AttrNamespace,\n Dict,\n Expressions,\n GetContextualFreeOpcode,\n Nullable,\n PresentArray,\n WireFormat,\n} from '@glimmer/interfaces';\nimport {\n APPEND_EXPR_HEAD,\n APPEND_PATH_HEAD,\n ARG_VAR,\n BLOCK_HEAD,\n BLOCK_VAR,\n BUILDER_COMMENT,\n BUILDER_LITERAL,\n CALL_EXPR,\n CALL_HEAD,\n COMMENT_HEAD,\n CONCAT_EXPR,\n DYNAMIC_COMPONENT_HEAD,\n ELEMENT_HEAD,\n FREE_VAR,\n GET_PATH_EXPR,\n GET_VAR_EXPR,\n HAS_BLOCK_EXPR,\n HAS_BLOCK_PARAMS_EXPR,\n KEYWORD_HEAD,\n LITERAL_EXPR,\n LITERAL_HEAD,\n LOCAL_VAR,\n MODIFIER_HEAD,\n NS_XLINK,\n NS_XML,\n NS_XMLNS,\n SPLAT_HEAD,\n THIS_VAR,\n} from '@glimmer/constants';\nimport { exhausted, expect, isPresentArray, localAssert } from '@glimmer/debug-util';\nimport { assertNever, dict, values } from '@glimmer/util';\nimport { SexpOpcodes as Op, VariableResolutionContext } from '@glimmer/wire-format';\n\nimport type {\n BuilderComment,\n BuilderStatement,\n NormalizedAngleInvocation,\n NormalizedAttrs,\n NormalizedBlock,\n NormalizedBlocks,\n NormalizedElement,\n NormalizedExpression,\n NormalizedHash,\n NormalizedHead,\n NormalizedKeywordStatement,\n NormalizedParams,\n NormalizedPath,\n NormalizedStatement,\n Variable,\n} from './builder-interface';\n\nimport { normalizeStatement } from './builder-interface';\n\ninterface Symbols {\n top: ProgramSymbols;\n freeVar(name: string): number;\n arg(name: string): number;\n block(name: string): number;\n local(name: string): number;\n this(): number;\n\n hasLocal(name: string): boolean;\n\n child(params: string[]): LocalSymbols;\n}\n\nexport class ProgramSymbols implements Symbols {\n _freeVariables: string[] = [];\n _symbols: string[] = ['this'];\n\n top = this;\n\n toSymbols(): string[] {\n return this._symbols.slice(1);\n }\n\n toUpvars(): string[] {\n return this._freeVariables;\n }\n\n freeVar(name: string): number {\n return addString(this._freeVariables, name);\n }\n\n block(name: string): number {\n return this.symbol(name);\n }\n\n arg(name: string): number {\n return addString(this._symbols, name);\n }\n\n local(name: string): never {\n throw new Error(\n `No local ${name} was found. Maybe you meant ^${name} for upvar, or !${name} for keyword?`\n );\n }\n\n this(): number {\n return 0;\n }\n\n hasLocal(_name: string): false {\n return false;\n }\n\n // any symbol\n symbol(name: string): number {\n return addString(this._symbols, name);\n }\n\n child(locals: string[]): LocalSymbols {\n return new LocalSymbols(this, locals);\n }\n}\n\nclass LocalSymbols implements Symbols {\n private locals: Dict<number> = dict();\n\n constructor(\n private parent: Symbols,\n locals: string[]\n ) {\n for (let local of locals) {\n this.locals[local] = parent.top.symbol(local);\n }\n }\n\n get paramSymbols(): number[] {\n return values(this.locals);\n }\n\n get top(): ProgramSymbols {\n return this.parent.top;\n }\n\n freeVar(name: string): number {\n return this.parent.freeVar(name);\n }\n\n arg(name: string): number {\n return this.parent.arg(name);\n }\n\n block(name: string): number {\n return this.parent.block(name);\n }\n\n local(name: string): number {\n if (name in this.locals) {\n return this.locals[name] as number;\n } else {\n return this.parent.local(name);\n }\n }\n\n this(): number {\n return this.parent.this();\n }\n\n hasLocal(name: string): boolean {\n if (name in this.locals) {\n return true;\n } else {\n return this.parent.hasLocal(name);\n }\n }\n\n child(locals: string[]): LocalSymbols {\n return new LocalSymbols(this, locals);\n }\n}\n\nfunction addString(array: string[], item: string): number {\n let index = array.indexOf(item);\n\n if (index === -1) {\n index = array.length;\n array.push(item);\n return index;\n } else {\n return index;\n }\n}\n\nexport interface BuilderGetFree {\n type: 'GetFree';\n head: string;\n tail: string[];\n}\n\nfunction unimpl(message: string): Error {\n return new Error(`unimplemented ${message}`);\n}\n\nexport function buildStatements(\n statements: BuilderStatement[],\n symbols: Symbols\n): WireFormat.Statement[] {\n let out: WireFormat.Statement[] = [];\n\n statements.forEach((s) => out.push(...buildStatement(normalizeStatement(s), symbols)));\n\n return out;\n}\n\nexport function buildNormalizedStatements(\n statements: NormalizedStatement[],\n symbols: Symbols\n): WireFormat.Statement[] {\n let out: WireFormat.Statement[] = [];\n\n statements.forEach((s) => out.push(...buildStatement(s, symbols)));\n\n return out;\n}\n\nexport function buildStatement(\n normalized: NormalizedStatement,\n symbols: Symbols = new ProgramSymbols()\n): WireFormat.Statement[] {\n switch (normalized.kind) {\n case APPEND_PATH_HEAD: {\n return [\n [\n normalized.trusted ? Op.TrustingAppend : Op.Append,\n buildGetPath(normalized.path, symbols),\n ],\n ];\n }\n\n case APPEND_EXPR_HEAD: {\n return [\n [\n normalized.trusted ? Op.TrustingAppend : Op.Append,\n buildExpression(\n normalized.expr,\n normalized.trusted ? 'TrustedAppend' : 'Append',\n symbols\n ),\n ],\n ];\n }\n\n case CALL_HEAD: {\n let { head: path, params, hash, trusted } = normalized;\n let builtParams: Nullable<WireFormat.Core.Params> = params\n ? buildParams(params, symbols)\n : null;\n let builtHash: WireFormat.Core.Hash = hash ? buildHash(hash, symbols) : null;\n let builtExpr: WireFormat.Expression = buildCallHead(\n path,\n trusted\n ? VariableResolutionContext.ResolveAsHelperHead\n : VariableResolutionContext.ResolveAsComponentOrHelperHead,\n symbols\n );\n\n return [\n [trusted ? Op.TrustingAppend : Op.Append, [Op.Call, builtExpr, builtParams, builtHash]],\n ];\n }\n\n case LITERAL_HEAD: {\n return [[Op.Append, normalized.value]];\n }\n\n case COMMENT_HEAD: {\n return [[Op.Comment, normalized.value]];\n }\n\n case BLOCK_HEAD: {\n let blocks = buildBlocks(normalized.blocks, normalized.blockParams, symbols);\n let hash = buildHash(normalized.hash, symbols);\n let params = buildParams(normalized.params, symbols);\n let path = buildCallHead(\n normalized.head,\n VariableResolutionContext.ResolveAsComponentHead,\n symbols\n );\n\n return [[Op.Block, path, params, hash, blocks]];\n }\n\n case KEYWORD_HEAD: {\n return [buildKeyword(normalized, symbols)];\n }\n\n case ELEMENT_HEAD:\n return buildElement(normalized, symbols);\n\n case MODIFIER_HEAD:\n throw unimpl('modifier');\n\n case DYNAMIC_COMPONENT_HEAD:\n throw unimpl('dynamic component');\n\n default:\n assertNever(normalized);\n }\n}\n\nexport function s(\n arr: TemplateStringsArray,\n ...interpolated: unknown[]\n): [BUILDER_LITERAL, string] {\n let result = arr.reduce(\n // eslint-disable-next-line @typescript-eslint/no-base-to-string -- @fixme\n (result, string, i) => result + `${string}${interpolated[i] ? String(interpolated[i]) : ''}`,\n ''\n );\n\n return [BUILDER_LITERAL, result];\n}\n\nexport function c(arr: TemplateStringsArray, ...interpolated: unknown[]): BuilderComment {\n let result = arr.reduce(\n // eslint-disable-next-line @typescript-eslint/no-base-to-string -- @fixme\n (result, string, i) => result + `${string}${interpolated[i] ? String(interpolated[i]) : ''}`,\n ''\n );\n\n return [BUILDER_COMMENT, result];\n}\n\nexport function unicode(charCode: string): string {\n return String.fromCharCode(parseInt(charCode, 16));\n}\n\nexport const NEWLINE = '\\n';\n\nfunction buildKeyword(\n normalized: NormalizedKeywordStatement,\n symbols: Symbols\n): WireFormat.Statement {\n let { name } = normalized;\n let params = buildParams(normalized.params, symbols);\n let childSymbols = symbols.child(normalized.blockParams || []);\n\n let block = buildBlock(\n normalized.blocks['default'] as NormalizedBlock,\n childSymbols,\n childSymbols.paramSymbols\n );\n let inverse = normalized.blocks['else']\n ? buildBlock(normalized.blocks['else'], symbols, [])\n : null;\n\n switch (name) {\n case 'let':\n return [Op.Let, expect(params, 'let requires params'), block];\n case 'if':\n return [Op.If, expect(params, 'if requires params')[0], block, inverse];\n case 'each': {\n let keyExpr = normalized.hash ? normalized.hash['key'] : null;\n let key = keyExpr ? buildExpression(keyExpr, 'Strict', symbols) : null;\n return [Op.Each, expect(params, 'if requires params')[0], key, block, inverse];\n }\n\n default:\n throw new Error('unimplemented keyword');\n }\n}\n\nfunction buildElement(\n { name, attrs, block }: NormalizedElement,\n symbols: Symbols\n): WireFormat.Statement[] {\n let out: WireFormat.Statement[] = [\n hasSplat(attrs) ? [Op.OpenElementWithSplat, name] : [Op.OpenElement, name],\n ];\n if (attrs) {\n let { params, args } = buildElementParams(attrs, symbols);\n out.push(...params);\n localAssert(args === null, `Can't pass args to a simple element`);\n }\n out.push([Op.FlushElement]);\n\n if (Array.isArray(block)) {\n block.forEach((s) => out.push(...buildStatement(s, symbols)));\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n localAssert(block === null, `The only remaining type of 'block' is 'null'`);\n }\n\n out.push([Op.CloseElement]);\n\n return out;\n}\n\nfunction hasSplat(attrs: Nullable<NormalizedAttrs>): boolean {\n if (attrs === null) return false;\n\n return Object.keys(attrs).some((a) => attrs[a] === SPLAT_HEAD);\n}\n\nexport function buildAngleInvocation(\n { attrs, block, head }: NormalizedAngleInvocation,\n symbols: Symbols\n): WireFormat.Statements.Component {\n let paramList: WireFormat.ElementParameter[] = [];\n let args: WireFormat.Core.Hash = null;\n let blockList: WireFormat.Statement[] = [];\n\n if (attrs) {\n let built = buildElementParams(attrs, symbols);\n paramList = built.params;\n args = built.args;\n }\n\n if (block) blockList = buildNormalizedStatements(block, symbols);\n\n return [\n Op.Component,\n buildExpression(head, VariableResolutionContext.ResolveAsComponentHead, symbols),\n isPresentArray(paramList) ? paramList : null,\n args,\n [['default'], [[blockList, []]]],\n ];\n}\n\nexport function buildElementParams(\n attrs: NormalizedAttrs,\n symbols: Symbols\n): { params: WireFormat.ElementParameter[]; args: WireFormat.Core.Hash } {\n let params: WireFormat.ElementParameter[] = [];\n let keys: string[] = [];\n let values: WireFormat.Expression[] = [];\n\n for (const [key, value] of Object.entries(attrs)) {\n if (value === SPLAT_HEAD) {\n params.push([Op.AttrSplat, symbols.block('&attrs')]);\n } else if (key[0] === '@') {\n keys.push(key);\n values.push(buildExpression(value, 'Strict', symbols));\n } else {\n params.push(\n ...buildAttributeValue(\n key,\n value,\n // TODO: extract namespace from key\n extractNamespace(key),\n symbols\n )\n );\n }\n }\n\n return { params, args: isPresentArray(keys) && isPresentArray(values) ? [keys, values] : null };\n}\n\nexport function extractNamespace(name: string): Nullable<AttrNamespace> {\n if (name === 'xmlns') {\n return NS_XMLNS;\n }\n\n let match = /^([^:]*):([^:]*)$/u.exec(name);\n\n if (match === null) {\n return null;\n }\n\n let namespace = match[1];\n\n switch (namespace) {\n case 'xlink':\n return NS_XLINK;\n case 'xml':\n return NS_XML;\n case 'xmlns':\n return NS_XMLNS;\n }\n\n return null;\n}\n\nexport function buildAttributeValue(\n name: string,\n value: NormalizedExpression,\n namespace: Nullable<AttrNamespace>,\n symbols: Symbols\n): WireFormat.Attribute[] {\n switch (value.type) {\n case LITERAL_EXPR: {\n let val = value.value;\n\n if (val === false) {\n return [];\n } else if (val === true) {\n return [[Op.StaticAttr, name, '', namespace ?? undefined]];\n } else if (typeof val === 'string') {\n return [[Op.StaticAttr, name, val, namespace ?? undefined]];\n } else {\n throw new Error(`Unexpected/unimplemented literal attribute ${JSON.stringify(val)}`);\n }\n }\n\n default:\n return [\n [\n Op.DynamicAttr,\n name,\n buildExpression(value, 'AttrValue', symbols),\n namespace ?? undefined,\n ],\n ];\n }\n}\n\ntype ExprResolution =\n | VariableResolutionContext\n | 'Append'\n | 'TrustedAppend'\n | 'AttrValue'\n | 'SubExpression'\n | 'Strict';\n\nfunction varContext(context: ExprResolution, bare: boolean): VarResolution {\n switch (context) {\n case 'Append':\n return bare ? 'AppendBare' : 'AppendInvoke';\n case 'TrustedAppend':\n return bare ? 'TrustedAppendBare' : 'TrustedAppendInvoke';\n case 'AttrValue':\n return bare ? 'AttrValueBare' : 'AttrValueInvoke';\n default:\n return context;\n }\n}\n\nexport function buildExpression(\n expr: NormalizedExpression,\n context: ExprResolution,\n symbols: Symbols\n): WireFormat.Expression {\n switch (expr.type) {\n case GET_PATH_EXPR: {\n return buildGetPath(expr, symbols);\n }\n\n case GET_VAR_EXPR: {\n return buildVar(expr.variable, varContext(context, true), symbols);\n }\n\n case CONCAT_EXPR: {\n return [Op.Concat, buildConcat(expr.params, symbols)];\n }\n\n case CALL_EXPR: {\n let builtParams = buildParams(expr.params, symbols);\n let builtHash = buildHash(expr.hash, symbols);\n let builtExpr = buildCallHead(\n expr.head,\n context === 'Strict' ? 'SubExpression' : varContext(context, false),\n symbols\n );\n\n return [Op.Call, builtExpr, builtParams, builtHash];\n }\n\n case HAS_BLOCK_EXPR: {\n return [\n Op.HasBlock,\n buildVar(\n { kind: BLOCK_VAR, name: expr.name, mode: 'loose' },\n VariableResolutionContext.Strict,\n symbols\n ),\n ];\n }\n\n case HAS_BLOCK_PARAMS_EXPR: {\n return [\n Op.HasBlockParams,\n buildVar(\n { kind: BLOCK_VAR, name: expr.name, mode: 'loose' },\n VariableResolutionContext.Strict,\n symbols\n ),\n ];\n }\n\n case LITERAL_EXPR: {\n if (expr.value === undefined) {\n return [Op.Undefined];\n } else {\n return expr.value;\n }\n }\n\n default:\n assertNever(expr);\n }\n}\n\nexport function buildCallHead(\n callHead: NormalizedHead,\n context: VarResolution,\n symbols: Symbols\n): Expressions.GetVar | Expressions.GetPath {\n if (callHead.type === GET_VAR_EXPR) {\n return buildVar(callHead.variable, context, symbols);\n } else {\n return buildGetPath(callHead, symbols);\n }\n}\n\nexport function buildGetPath(head: NormalizedPath, symbols: Symbols): Expressions.GetPath {\n return buildVar(head.path.head, VariableResolutionContext.Strict, symbols, head.path.tail);\n}\n\ntype VarResolution =\n | VariableResolutionContext\n | 'AppendBare'\n | 'AppendInvoke'\n | 'TrustedAppendBare'\n | 'TrustedAppendInvoke'\n | 'AttrValueBare'\n | 'AttrValueInvoke'\n | 'SubExpression'\n | 'Strict';\n\nexport function buildVar(\n head: Variable,\n context: VarResolution,\n symbols: Symbols,\n path: PresentArray<string>\n): Expressions.GetPath;\nexport function buildVar(\n head: Variable,\n context: VarResolution,\n symbols: Symbols\n): Expressions.GetVar;\nexport function buildVar(\n head: Variable,\n context: VarResolution,\n symbols: Symbols,\n path?: PresentArray<string>\n): Expressions.GetPath | Expressions.GetVar {\n let op: Expressions.GetPath[0] | Expressions.GetVar[0] = Op.GetSymbol;\n let sym: number;\n switch (head.kind) {\n case FREE_VAR:\n if (context === 'Strict') {\n op = Op.GetStrictKeyword;\n } else if (context === 'AppendBare') {\n op = Op.GetFreeAsComponentOrHelperHead;\n } else if (context === 'AppendInvoke') {\n op = Op.GetFreeAsComponentOrHelperHead;\n } else if (context === 'TrustedAppendBare') {\n op = Op.GetFreeAsHelperHead;\n } else if (context === 'TrustedAppendInvoke') {\n op = Op.GetFreeAsHelperHead;\n } else if (context === 'AttrValueBare') {\n op = Op.GetFreeAsHelperHead;\n } else if (context === 'AttrValueInvoke') {\n op = Op.GetFreeAsHelperHead;\n } else if (context === 'SubExpression') {\n op = Op.GetFreeAsHelperHead;\n } else {\n op = expressionContextOp(context);\n }\n sym = symbols.freeVar(head.name);\n break;\n default:\n op = Op.GetSymbol;\n sym = getSymbolForVar(head.kind, symbols, head.name);\n }\n\n if (path === undefined || path.length === 0) {\n return [op, sym];\n } else {\n localAssert(op !== Op.GetStrictKeyword, '[BUG] keyword with a path');\n return [op, sym, path];\n }\n}\n\nfunction getSymbolForVar(kind: Exclude<VariableKind, FREE_VAR>, symbols: Symbols, name: string) {\n switch (kind) {\n case ARG_VAR:\n return symbols.arg(name);\n case BLOCK_VAR:\n return symbols.block(name);\n case LOCAL_VAR:\n return symbols.local(name);\n case THIS_VAR:\n return symbols.this();\n default:\n return exhausted(kind);\n }\n}\n\nexport function expressionContextOp(context: VariableResolutionContext): GetContextualFreeOpcode {\n switch (context) {\n case VariableResolutionContext.Strict:\n return Op.GetStrictKeyword;\n case VariableResolutionContext.ResolveAsComponentOrHelperHead:\n return Op.GetFreeAsComponentOrHelperHead;\n case VariableResolutionContext.ResolveAsHelperHead:\n return Op.GetFreeAsHelperHead;\n case VariableResolutionContext.ResolveAsModifierHead:\n return Op.GetFreeAsModifierHead;\n case VariableResolutionContext.ResolveAsComponentHead:\n return Op.GetFreeAsComponentHead;\n default:\n return exhausted(context);\n }\n}\n\nexport function buildParams(\n exprs: Nullable<NormalizedParams>,\n symbols: Symbols\n): Nullable<WireFormat.Core.Params> {\n if (exprs === null || !isPresentArray(exprs)) return null;\n\n return exprs.map((e) => buildExpression(e, 'Strict', symbols)) as WireFormat.Core.ConcatParams;\n}\n\nexport function buildConcat(\n exprs: [NormalizedExpression, ...NormalizedExpression[]],\n symbols: Symbols\n): WireFormat.Core.ConcatParams {\n return exprs.map((e) => buildExpression(e, 'AttrValue', symbols)) as WireFormat.Core.ConcatParams;\n}\n\nexport function buildHash(exprs: Nullable<NormalizedHash>, symbols: Symbols): WireFormat.Core.Hash {\n if (exprs === null) return null;\n\n let out: [string[], WireFormat.Expression[]] = [[], []];\n\n for (const [key, value] of Object.entries(exprs)) {\n out[0].push(key);\n out[1].push(buildExpression(value, 'Strict', symbols));\n }\n\n return out as WireFormat.Core.Hash;\n}\n\nexport function buildBlocks(\n blocks: NormalizedBlocks,\n blockParams: Nullable<string[]>,\n parent: Symbols\n): WireFormat.Core.Blocks {\n let keys: string[] = [];\n let values: WireFormat.SerializedInlineBlock[] = [];\n\n for (const [name, block] of Object.entries(blocks)) {\n keys.push(name);\n\n if (name === 'default') {\n let symbols = parent.child(blockParams || []);\n\n values.push(buildBlock(block, symbols, symbols.paramSymbols));\n } else {\n values.push(buildBlock(block, parent, []));\n }\n }\n\n return [keys, values];\n}\n\nfunction buildBlock(\n block: NormalizedBlock,\n symbols: Symbols,\n locals: number[] = []\n): WireFormat.SerializedInlineBlock {\n return [buildNormalizedStatements(block, symbols), locals];\n}\n","import type * as ASTv1 from '../v1/api';\n\nconst Char = {\n NBSP: 0xa0,\n QUOT: 0x22,\n LT: 0x3c,\n GT: 0x3e,\n AMP: 0x26,\n};\n\n// \\x26 is ampersand, \\xa0 is non-breaking space\nconst ATTR_VALUE_REGEX_TEST = /[\"\\x26\\xa0]/u;\nconst ATTR_VALUE_REGEX_REPLACE = new RegExp(ATTR_VALUE_REGEX_TEST.source, 'gu');\n\nconst TEXT_REGEX_TEST = /[&<>\\xa0]/u;\nconst TEXT_REGEX_REPLACE = new RegExp(TEXT_REGEX_TEST.source, 'gu');\n\nfunction attrValueReplacer(char: string): string {\n switch (char.charCodeAt(0)) {\n case Char.NBSP:\n return ' ';\n case Char.QUOT:\n return '"';\n case Char.AMP:\n return '&';\n default:\n return char;\n }\n}\n\nfunction textReplacer(char: string): string {\n switch (char.charCodeAt(0)) {\n case Char.NBSP:\n return ' ';\n case Char.AMP:\n return '&';\n case Char.LT:\n return '<';\n case Char.GT:\n return '>';\n default:\n return char;\n }\n}\n\nexport function escapeAttrValue(attrValue: string): string {\n if (ATTR_VALUE_REGEX_TEST.test(attrValue)) {\n return attrValue.replace(ATTR_VALUE_REGEX_REPLACE, attrValueReplacer);\n }\n return attrValue;\n}\n\nexport function escapeText(text: string): string {\n if (TEXT_REGEX_TEST.test(text)) {\n return text.replace(TEXT_REGEX_REPLACE, textReplacer);\n }\n return text;\n}\n\nexport function sortByLoc(a: ASTv1.Node, b: ASTv1.Node): -1 | 0 | 1 {\n // If either is invisible, don't try to order them\n if (a.loc.isInvisible || b.loc.isInvisible) {\n return 0;\n }\n\n if (a.loc.startPosition.line < b.loc.startPosition.line) {\n return -1;\n }\n\n if (\n a.loc.startPosition.line === b.loc.startPosition.line &&\n a.loc.startPosition.column < b.loc.startPosition.column\n ) {\n return -1;\n }\n\n if (\n a.loc.startPosition.line === b.loc.startPosition.line &&\n a.loc.startPosition.column === b.loc.startPosition.column\n ) {\n return 0;\n }\n\n return 1;\n}\n","import type * as ASTv1 from '../v1/api';\n\nimport { escapeAttrValue, escapeText, sortByLoc } from './util';\n\nexport const voidMap = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n]);\n\nexport function getVoidTags() {\n return [...voidMap];\n}\n\nconst NON_WHITESPACE = /^\\S/u;\n\nexport interface PrinterOptions {\n entityEncoding: ASTv1.EntityEncodingState;\n\n /**\n * Used to override the mechanism of printing a given AST.Node.\n *\n * This will generally only be useful to source -> source codemods\n * where you would like to specialize/override the way a given node is\n * printed (e.g. you would like to preserve as much of the original\n * formatting as possible).\n *\n * When the provided override returns undefined, the default built in printing\n * will be done for the AST.Node.\n *\n * @param ast the ast node to be printed\n * @param options the options specified during the print() invocation\n */\n override?(ast: ASTv1.Node, options: PrinterOptions): void | string;\n}\n\n/**\n * Examples when true:\n * - link\n * - liNK\n *\n * Examples when false:\n * - Link (component)\n */\nexport function isVoidTag(tag: string): boolean {\n return voidMap.has(tag.toLowerCase()) && tag[0]?.toLowerCase() === tag[0];\n}\n\nexport default class Printer {\n private buffer = '';\n private options: PrinterOptions;\n\n constructor(options: PrinterOptions) {\n this.options = options;\n }\n\n /*\n This is used by _all_ methods on this Printer class that add to `this.buffer`,\n it allows consumers of the printer to use alternate string representations for\n a given node.\n\n The primary use case for this are things like source -> source codemod utilities.\n For example, ember-template-recast attempts to always preserve the original string\n formatting in each AST node if no modifications are made to it.\n */\n handledByOverride(node: ASTv1.Node, ensureLeadingWhitespace = false): boolean {\n if (this.options.override !== undefined) {\n let result = this.options.override(node, this.options);\n if (typeof result === 'string') {\n if (ensureLeadingWhitespace && NON_WHITESPACE.test(result)) {\n result = ` ${result}`;\n }\n\n this.buffer += result;\n return true;\n }\n }\n\n return false;\n }\n\n Node(node: ASTv1.Node): void {\n switch (node.type) {\n case 'MustacheStatement':\n case 'BlockStatement':\n case 'MustacheCommentStatement':\n case 'CommentStatement':\n case 'TextNode':\n case 'ElementNode':\n case 'AttrNode':\n case 'Block':\n case 'Template':\n return this.TopLevelStatement(node);\n case 'StringLiteral':\n case 'BooleanLiteral':\n case 'NumberLiteral':\n case 'UndefinedLiteral':\n case 'NullLiteral':\n case 'PathExpression':\n case 'SubExpression':\n return this.Expression(node);\n case 'ConcatStatement':\n // should have an AttrNode parent\n return this.ConcatStatement(node);\n case 'Hash':\n return this.Hash(node);\n case 'HashPair':\n return this.HashPair(node);\n case 'ElementModifierStatement':\n return this.ElementModifierStatement(node);\n }\n }\n\n Expression(expression: ASTv1.Expression): void {\n switch (expression.type) {\n case 'StringLiteral':\n case 'BooleanLiteral':\n case 'NumberLiteral':\n case 'UndefinedLiteral':\n case 'NullLiteral':\n return this.Literal(expression);\n case 'PathExpression':\n return this.PathExpression(expression);\n case 'SubExpression':\n return this.SubExpression(expression);\n }\n }\n\n Literal(literal: ASTv1.Literal): void {\n switch (literal.type) {\n case 'StringLiteral':\n return this.StringLiteral(literal);\n case 'BooleanLiteral':\n return this.BooleanLiteral(literal);\n case 'NumberLiteral':\n return this.NumberLiteral(literal);\n case 'UndefinedLiteral':\n return this.UndefinedLiteral(literal);\n case 'NullLiteral':\n return this.NullLiteral(literal);\n }\n }\n\n TopLevelStatement(statement: ASTv1.TopLevelStatement | ASTv1.Template | ASTv1.AttrNode): void {\n switch (statement.type) {\n case 'MustacheStatement':\n return this.MustacheStatement(statement);\n case 'BlockStatement':\n return this.BlockStatement(statement);\n case 'MustacheCommentStatement':\n return this.MustacheCommentStatement(statement);\n case 'CommentStatement':\n return this.CommentStatement(statement);\n case 'TextNode':\n return this.TextNode(statement);\n case 'ElementNode':\n return this.ElementNode(statement);\n case 'Block':\n return this.Block(statement);\n case 'Template':\n return this.Template(statement);\n case 'AttrNode':\n // should have element\n return this.AttrNode(statement);\n }\n }\n\n Template(template: ASTv1.Template): void {\n this.TopLevelStatements(template.body);\n }\n\n Block(block: ASTv1.Block): void {\n /*\n When processing a template like:\n\n ```hbs\n {{#if whatever}}\n whatever\n {{else if somethingElse}}\n something else\n {{else}}\n fallback\n {{/if}}\n ```\n\n The AST still _effectively_ looks like:\n\n ```hbs\n {{#if whatever}}\n whatever\n {{else}}{{#if somethingElse}}\n something else\n {{else}}\n fallback\n {{/if}}{{/if}}\n ```\n\n The only way we can tell if that is the case is by checking for\n `block.chained`, but unfortunately when the actual statements are\n processed the `block.body[0]` node (which will always be a\n `BlockStatement`) has no clue that its ancestor `Block` node was\n chained.\n\n This \"forwards\" the `chained` setting so that we can check\n it later when processing the `BlockStatement`.\n */\n if (block.chained) {\n let firstChild = block.body[0] as ASTv1.BlockStatement;\n firstChild.chained = true;\n }\n\n if (this.handledByOverride(block)) {\n return;\n }\n\n this.TopLevelStatements(block.body);\n }\n\n TopLevelStatements(statements: ASTv1.TopLevelStatement[]): void {\n statements.forEach((statement) => this.TopLevelStatement(statement));\n }\n\n ElementNode(el: ASTv1.ElementNode): void {\n if (this.handledByOverride(el)) {\n return;\n }\n\n this.OpenElementNode(el);\n this.TopLevelStatements(el.children);\n this.CloseElementNode(el);\n }\n\n OpenElementNode(el: ASTv1.ElementNode): void {\n this.buffer += `<${el.tag}`;\n const parts = [...el.attributes, ...el.modifiers, ...el.comments].sort(sortByLoc);\n\n for (const part of parts) {\n this.buffer += ' ';\n switch (part.type) {\n case 'AttrNode':\n this.AttrNode(part);\n break;\n case 'ElementModifierStatement':\n this.ElementModifierStatement(part);\n break;\n case 'MustacheCommentStatement':\n this.MustacheCommentStatement(part);\n break;\n }\n }\n if (el.blockParams.length) {\n this.BlockParams(el.blockParams);\n }\n if (el.selfClosing) {\n this.buffer += ' /';\n }\n this.buffer += '>';\n }\n\n CloseElementNode(el: ASTv1.ElementNode): void {\n if (el.selfClosing || isVoidTag(el.tag)) {\n return;\n }\n this.buffer += `</${el.tag}>`;\n }\n\n AttrNode(attr: ASTv1.AttrNode): void {\n if (this.handledByOverride(attr)) {\n return;\n }\n\n let { name, value } = attr;\n\n this.buffer += name;\n const isAttribute = !name.startsWith('@');\n const shouldElideValue = isAttribute && value.type == 'TextNode' && value.chars.length === 0;\n if (!shouldElideValue) {\n this.buffer += '=';\n this.AttrNodeValue(value);\n }\n }\n\n AttrNodeValue(value: ASTv1.AttrNode['value']): void {\n if (value.type === 'TextNode') {\n let quote: '\"' | \"'\" = '\"';\n if (this.options.entityEncoding === 'raw') {\n if (value.chars.includes('\"') && !value.chars.includes(\"'\")) {\n quote = \"'\";\n }\n }\n this.buffer += quote;\n this.TextNode(value, quote);\n this.buffer += quote;\n } else {\n this.Node(value);\n }\n }\n\n TextNode(text: ASTv1.TextNode, isInAttr?: \"'\" | '\"'): void {\n if (this.handledByOverride(text)) {\n return;\n }\n\n if (this.options.entityEncoding === 'raw') {\n if (isInAttr && text.chars.includes(isInAttr)) {\n this.buffer += escapeAttrValue(text.chars);\n } else {\n this.buffer += text.chars;\n }\n } else if (isInAttr) {\n this.buffer += escapeAttrValue(text.chars);\n } else {\n this.buffer += escapeText(text.chars);\n }\n }\n\n MustacheStatement(mustache: ASTv1.MustacheStatement): void {\n if (this.handledByOverride(mustache)) {\n return;\n }\n\n this.buffer += mustache.trusting ? '{{{' : '{{';\n\n if (mustache.strip.open) {\n this.buffer += '~';\n }\n\n this.Expression(mustache.path);\n this.Params(mustache.params);\n this.Hash(mustache.hash);\n\n if (mustache.strip.close) {\n this.buffer += '~';\n }\n\n this.buffer += mustache.trusting ? '}}}' : '}}';\n }\n\n BlockStatement(block: ASTv1.BlockStatement): void {\n if (this.handledByOverride(block)) {\n return;\n }\n\n if (block.chained) {\n this.buffer += block.inverseStrip.open ? '{{~' : '{{';\n this.buffer += 'else ';\n } else {\n this.buffer += block.openStrip.open ? '{{~#' : '{{#';\n }\n\n this.Expression(block.path);\n this.Params(block.params);\n this.Hash(block.hash);\n if (block.program.blockParams.length) {\n this.BlockParams(block.program.blockParams);\n }\n\n if (block.chained) {\n this.buffer += block.inverseStrip.close ? '~}}' : '}}';\n } else {\n this.buffer += block.openStrip.close ? '~}}' : '}}';\n }\n\n this.Block(block.program);\n\n if (block.inverse) {\n if (!block.inverse.chained) {\n this.buffer += block.inverseStrip.open ? '{{~' : '{{';\n this.buffer += 'else';\n this.buffer += block.inverseStrip.close ? '~}}' : '}}';\n }\n\n this.Block(block.inverse);\n }\n\n if (!block.chained) {\n this.buffer += block.closeStrip.open ? '{{~/' : '{{/';\n this.Expression(block.path);\n this.buffer += block.closeStrip.close ? '~}}' : '}}';\n }\n }\n\n BlockParams(blockParams: string[]): void {\n this.buffer += ` as |${blockParams.join(' ')}|`;\n }\n\n ConcatStatement(concat: ASTv1.ConcatStatement): void {\n if (this.handledByOverride(concat)) {\n return;\n }\n\n this.buffer += '\"';\n concat.parts.forEach((part) => {\n if (part.type === 'TextNode') {\n this.TextNode(part, '\"');\n } else {\n this.Node(part);\n }\n });\n this.buffer += '\"';\n }\n\n MustacheCommentStatement(comment: ASTv1.MustacheCommentStatement): void {\n if (this.handledByOverride(comment)) {\n return;\n }\n\n this.buffer += `{{!--${comment.value}--}}`;\n }\n\n ElementModifierStatement(mod: ASTv1.ElementModifierStatement): void {\n if (this.handledByOverride(mod)) {\n return;\n }\n\n this.buffer += '{{';\n this.Expression(mod.path);\n this.Params(mod.params);\n this.Hash(mod.hash);\n this.buffer += '}}';\n }\n\n CommentStatement(comment: ASTv1.CommentStatement): void {\n if (this.handledByOverride(comment)) {\n return;\n }\n\n this.buffer += `<!--${comment.value}-->`;\n }\n\n PathExpression(path: ASTv1.PathExpression): void {\n if (this.handledByOverride(path)) {\n return;\n }\n\n this.buffer += path.original;\n }\n\n SubExpression(sexp: ASTv1.SubExpression): void {\n if (this.handledByOverride(sexp)) {\n return;\n }\n\n this.buffer += '(';\n this.Expression(sexp.path);\n this.Params(sexp.params);\n this.Hash(sexp.hash);\n this.buffer += ')';\n }\n\n Params(params: ASTv1.Expression[]): void {\n // TODO: implement a top level Params AST node (just like the Hash object)\n // so that this can also be overridden\n if (params.length) {\n params.forEach((param) => {\n this.buffer += ' ';\n this.Expression(param);\n });\n }\n }\n\n Hash(hash: ASTv1.Hash): void {\n if (this.handledByOverride(hash, true)) {\n return;\n }\n\n hash.pairs.forEach((pair) => {\n this.buffer += ' ';\n this.HashPair(pair);\n });\n }\n\n HashPair(pair: ASTv1.HashPair): void {\n if (this.handledByOverride(pair)) {\n return;\n }\n\n this.buffer += pair.key;\n this.buffer += '=';\n this.Node(pair.value);\n }\n\n StringLiteral(str: ASTv1.StringLiteral): void {\n if (this.handledByOverride(str)) {\n return;\n }\n\n this.buffer += JSON.stringify(str.value);\n }\n\n BooleanLiteral(bool: ASTv1.BooleanLiteral): void {\n if (this.handledByOverride(bool)) {\n return;\n }\n\n this.buffer += String(bool.value);\n }\n\n NumberLiteral(number: ASTv1.NumberLiteral): void {\n if (this.handledByOverride(number)) {\n return;\n }\n\n this.buffer += String(number.value);\n }\n\n UndefinedLiteral(node: ASTv1.UndefinedLiteral): void {\n if (this.handledByOverride(node)) {\n return;\n }\n\n this.buffer += 'undefined';\n }\n\n NullLiteral(node: ASTv1.NullLiteral): void {\n if (this.handledByOverride(node)) {\n return;\n }\n\n this.buffer += 'null';\n }\n\n print(node: ASTv1.Node): string {\n let { options } = this;\n\n if (options.override) {\n let result = options.override(node, options);\n\n if (result !== undefined) {\n return result;\n }\n }\n\n this.buffer = '';\n this.Node(node);\n return this.buffer;\n }\n}\n","import type * as ASTv1 from '../v1/api';\nimport type { PrinterOptions } from './printer';\n\nimport Printer from './printer';\n\nexport default function build(\n ast: ASTv1.Node,\n options: PrinterOptions = { entityEncoding: 'transformed' }\n): string {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- JS users\n if (!ast) {\n return '';\n }\n\n let printer = new Printer(options);\n return printer.print(ast);\n}\n","export type Keywords = keyof typeof KEYWORDS_TYPES;\nexport type KeywordType = 'Call' | 'Modifier' | 'Append' | 'Block';\n\nexport function isKeyword(word: string): word is Keywords;\nexport function isKeyword(word: string, type: KeywordType): boolean;\nexport function isKeyword(word: string, type?: KeywordType): boolean {\n if (word in KEYWORDS_TYPES) {\n if (type === undefined) {\n return true;\n } else {\n let types = KEYWORDS_TYPES[word as Keywords];\n // This seems like a TypeScript bug – it inferred types as never[]?\n return types.includes(type as never);\n }\n } else {\n return false;\n }\n}\n\n/**\n * This includes the full list of keywords currently in use in the template\n * language, and where their valid usages are.\n */\nexport const KEYWORDS_TYPES = {\n action: ['Call', 'Modifier'],\n component: ['Call', 'Append', 'Block'],\n debugger: ['Append'],\n 'each-in': ['Block'],\n each: ['Block'],\n 'has-block-params': ['Call', 'Append'],\n 'has-block': ['Call', 'Append'],\n helper: ['Call', 'Append'],\n if: ['Call', 'Append', 'Block'],\n 'in-element': ['Block'],\n let: ['Block'],\n log: ['Call', 'Append'],\n modifier: ['Call', 'Modifier'],\n mount: ['Append'],\n mut: ['Call', 'Append'],\n outlet: ['Append'],\n readonly: ['Call', 'Append'],\n unbound: ['Call', 'Append'],\n unless: ['Call', 'Append', 'Block'],\n yield: ['Append'],\n} satisfies Record<string, readonly KeywordType[]>;\n","var errorProps = [\n 'description',\n 'fileName',\n 'lineNumber',\n 'endLineNumber',\n 'message',\n 'name',\n 'number',\n 'stack'\n];\nfunction Exception(message, node) {\n var loc = node && node.loc, line, endLineNumber, column, endColumn;\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n message += ' - ' + line + ':' + column;\n }\n var tmp = Error.prototype.constructor.call(this, message);\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n }\n else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n }\n catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\nException.prototype = new Error();\nexport default Exception;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFNLFVBQVUsR0FBRztJQUNqQixhQUFhO0lBQ2IsVUFBVTtJQUNWLFlBQVk7SUFDWixlQUFlO0lBQ2YsU0FBUztJQUNULE1BQU07SUFDTixRQUFRO0lBQ1IsT0FBTztDQUNSLENBQUM7QUFFRixTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSTtJQUM5QixJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsRUFDeEIsSUFBSSxFQUNKLGFBQWEsRUFDYixNQUFNLEVBQ04sU0FBUyxDQUFDO0lBRVosSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNSLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN0QixhQUFhLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDN0IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzFCLFNBQVMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUUzQixPQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTFELG1HQUFtRztJQUNuRyxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzVCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztZQUVuQyw4RUFBOEU7WUFDOUUsMEJBQTBCO1lBQzFCLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUMxQixNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7b0JBQ3BDLEtBQUssRUFBRSxNQUFNO29CQUNiLFVBQVUsRUFBRSxJQUFJO2lCQUNqQixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO29CQUN2QyxLQUFLLEVBQUUsU0FBUztvQkFDaEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLDhDQUE4QztJQUNoRCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUVsQyxlQUFlLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=","import Exception from './exception.js';\nfunction Visitor() {\n this.parents = [];\n}\nVisitor.prototype = {\n constructor: Visitor,\n mutating: false,\n // Visits a given value. If mutating, will replace the value if necessary.\n acceptKey: function (node, name) {\n var value = this.accept(node[name]);\n if (this.mutating) {\n // Hacky sanity check: This may have a few false positives for type for the helper\n // methods but will generally do the right thing without a lot of overhead.\n if (value && !Visitor.prototype[value.type]) {\n throw new Exception('Unexpected node type \"' +\n value.type +\n '\" found when accepting ' +\n name +\n ' on ' +\n node.type);\n }\n node[name] = value;\n }\n },\n // Performs an accept operation with added sanity check to ensure\n // required keys are not removed.\n acceptRequired: function (node, name) {\n this.acceptKey(node, name);\n if (!node[name]) {\n throw new Exception(node.type + ' requires ' + name);\n }\n },\n // Traverses a given array. If mutating, empty responses will be removed\n // for child elements.\n acceptArray: function (array) {\n for (var i = 0, l = array.length; i < l; i++) {\n this.acceptKey(array, i);\n if (!array[i]) {\n array.splice(i, 1);\n i--;\n l--;\n }\n }\n },\n accept: function (object) {\n if (!object) {\n return;\n }\n /* istanbul ignore next: Sanity code */\n if (!this[object.type]) {\n throw new Exception('Unknown type: ' + object.type, object);\n }\n if (this.current) {\n this.parents.unshift(this.current);\n }\n this.current = object;\n var ret = this[object.type](object);\n this.current = this.parents.shift();\n if (!this.mutating || ret) {\n return ret;\n }\n else if (ret !== false) {\n return object;\n }\n },\n Program: function (program) {\n this.acceptArray(program.body);\n },\n MustacheStatement: visitSubExpression,\n Decorator: visitSubExpression,\n BlockStatement: visitBlock,\n DecoratorBlock: visitBlock,\n PartialStatement: visitPartial,\n PartialBlockStatement: function (partial) {\n visitPartial.call(this, partial);\n this.acceptKey(partial, 'program');\n },\n ContentStatement: function ( /* content */) { },\n CommentStatement: function ( /* comment */) { },\n SubExpression: visitSubExpression,\n PathExpression: function ( /* path */) { },\n StringLiteral: function ( /* string */) { },\n NumberLiteral: function ( /* number */) { },\n BooleanLiteral: function ( /* bool */) { },\n UndefinedLiteral: function ( /* literal */) { },\n NullLiteral: function ( /* literal */) { },\n Hash: function (hash) {\n this.acceptArray(hash.pairs);\n },\n HashPair: function (pair) {\n this.acceptRequired(pair, 'value');\n },\n};\nfunction visitSubExpression(mustache) {\n this.acceptRequired(mustache, 'path');\n this.acceptArray(mustache.params);\n this.acceptKey(mustache, 'hash');\n}\nfunction visitBlock(block) {\n visitSubExpression.call(this, block);\n this.acceptKey(block, 'program');\n this.acceptKey(block, 'inverse');\n}\nfunction visitPartial(partial) {\n this.acceptRequired(partial, 'name');\n this.acceptArray(partial.params);\n this.acceptKey(partial, 'hash');\n}\nexport default Visitor;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi92aXNpdG9yLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sU0FBUyxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLFNBQVMsT0FBTztJQUNkLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxPQUFPLENBQUMsU0FBUyxHQUFHO0lBQ2xCLFdBQVcsRUFBRSxPQUFPO0lBQ3BCLFFBQVEsRUFBRSxLQUFLO0lBRWYsMEVBQTBFO0lBQzFFLFNBQVMsRUFBRSxVQUFVLElBQUksRUFBRSxJQUFJO1FBQzdCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsa0ZBQWtGO1lBQ2xGLDJFQUEyRTtZQUMzRSxJQUFJLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzVDLE1BQU0sSUFBSSxTQUFTLENBQ2pCLHdCQUF3QjtvQkFDdEIsS0FBSyxDQUFDLElBQUk7b0JBQ1YseUJBQXlCO29CQUN6QixJQUFJO29CQUNKLE1BQU07b0JBQ04sSUFBSSxDQUFDLElBQUksQ0FDWixDQUFDO1lBQ0osQ0FBQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCxpRUFBaUU7SUFDakUsaUNBQWlDO0lBQ2pDLGNBQWMsRUFBRSxVQUFVLElBQUksRUFBRSxJQUFJO1FBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksU0FBUyxD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SSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELFFBQVEsRUFBRSxVQUFVLElBQUk7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNGLENBQUM7QUFFRixTQUFTLGtCQUFrQixDQUFDLFFBQVE7SUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUNELFNBQVMsVUFBVSxDQUFDLEtBQUs7SUFDdkIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVyQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBQ0QsU0FBUyxZQUFZLENBQUMsT0FBTztJQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQsZUFBZSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vZXhjZXB0aW9uLmpzJztcblxuZnVuY3Rpb24gVmlzaXRvcigpIHtcbiAgdGhpcy5wYXJlbnRzID0gW107XG59XG5cblZpc2l0b3IucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogVmlzaXRvcixcbiAgbXV0YXRpbmc6IGZhbHNlLFxuXG4gIC8vIFZpc2l0cyBhIGdpdmVuIHZhbHVlLiBJZiBtdXRhdGluZywgd2lsbCByZXBsYWNlIHRoZSB2YWx1ZSBpZiBuZWNlc3NhcnkuXG4gIGFjY2VwdEtleTogZnVuY3Rpb24gKG5vZGUsIG5hbWUpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmFjY2VwdChub2RlW25hbWVdKTtcbiAgICBpZiAodGhpcy5tdXRhdGluZykge1xuICAgICAgLy8gSGFja3kgc2FuaXR5IGNoZWNrOiBUaGlzIG1heSBoYXZlIGEgZmV3IGZhbHNlIHBvc2l0aXZlcyBmb3IgdHlwZSBmb3IgdGhlIGhlbHBlclxuICAgICAgLy8gbWV0aG9kcyBidXQgd2lsbCBnZW5lcmFsbHkgZG8gdGhlIHJpZ2h0IHRoaW5nIHdpdGhvdXQgYSBsb3Qgb2Ygb3ZlcmhlYWQuXG4gICAgICBpZiAodmFsdWUgJiYgIVZpc2l0b3IucHJvdG90eXBlW3ZhbHVlLnR5cGVdKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICAgJ1VuZXhwZWN0ZWQgbm9kZSB0eXBlIFwiJyArXG4gICAgICAgICAgICB2YWx1ZS50eXBlICtcbiAgICAgICAgICAgICdcIiBmb3VuZCB3aGVuIGFjY2VwdGluZyAnICtcbiAgICAgICAgICAgIG5hbWUgK1xuICAgICAgICAgICAgJyBvbiAnICtcbiAgICAgICAgICAgIG5vZGUudHlwZVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgbm9kZVtuYW1lXSA9IHZhbHVlO1xuICAgIH1cbiAgfSxcblxuICAvLyBQZXJmb3JtcyBhbiBhY2NlcHQgb3BlcmF0aW9uIHdpdGggYWRkZWQgc2FuaXR5IGNoZWNrIHRvIGVuc3VyZVxuICAvLyByZXF1aXJlZCBrZXlzIGFyZSBub3QgcmVtb3ZlZC5cbiAgYWNjZXB0UmVxdWlyZWQ6IGZ1bmN0aW9uIChub2RlLCBuYW1lKSB7XG4gICAgdGhpcy5hY2NlcHRLZXkobm9kZSwgbmFtZSk7XG5cbiAgICBpZiAoIW5vZGVbbmFtZV0pIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24obm9kZS50eXBlICsgJyByZXF1aXJlcyAnICsgbmFtZSk7XG4gICAgfVxuICB9LFxuXG4gIC8vIFRyYXZlcnNlcyBhIGdpdmVuIGFycmF5LiBJZiBtdXRhdGluZywgZW1wdHkgcmVzcG9uc2VzIHdpbGwgYmUgcmVtb3ZlZFxuICAvLyBmb3IgY2hpbGQgZWxlbWVudHMuXG4gIGFjY2VwdEFycmF5OiBmdW5jdGlvbiAoYXJyYXkpIHtcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgdGhpcy5hY2NlcHRLZXkoYXJyYXksIGkpO1xuXG4gICAgICBpZiAoIWFycmF5W2ldKSB7XG4gICAgICAgIGFycmF5LnNwbGljZShpLCAxKTtcbiAgICAgICAgaS0tO1xuICAgICAgICBsLS07XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGFjY2VwdDogZnVuY3Rpb24gKG9iamVjdCkge1xuICAgIGlmICghb2JqZWN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IFNhbml0eSBjb2RlICovXG4gICAgaWYgKCF0aGlzW29iamVjdC50eXBlXSkge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5rbm93biB0eXBlOiAnICsgb2JqZWN0LnR5cGUsIG9iamVjdCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudCkge1xuICAgICAgdGhpcy5wYXJlbnRzLnVuc2hpZnQodGhpcy5jdXJyZW50KTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50ID0gb2JqZWN0O1xuXG4gICAgbGV0IHJldCA9IHRoaXNbb2JqZWN0LnR5cGVdKG9iamVjdCk7XG5cbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnBhcmVudHMuc2hpZnQoKTtcblxuICAgIGlmICghdGhpcy5tdXRhdGluZyB8fCByZXQpIHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBlbHNlIGlmIChyZXQgIT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cbiAgfSxcblxuICBQcm9ncmFtOiBmdW5jdGlvbiAocHJvZ3JhbSkge1xuICAgIHRoaXMuYWNjZXB0QXJyYXkocHJvZ3JhbS5ib2R5KTtcbiAgfSxcblxuICBNdXN0YWNoZVN0YXRlbWVudDogdmlzaXRTdWJFeHByZXNzaW9uLFxuICBEZWNvcmF0b3I6IHZpc2l0U3ViRXhwcmVzc2lvbixcblxuICBCbG9ja1N0YXRlbWVudDogdmlzaXRCbG9jayxcbiAgRGVjb3JhdG9yQmxvY2s6IHZpc2l0QmxvY2ssXG5cbiAgUGFydGlhbFN0YXRlbWVudDogdmlzaXRQYXJ0aWFsLFxuICBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChwYXJ0aWFsKSB7XG4gICAgdmlzaXRQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCk7XG5cbiAgICB0aGlzLmFjY2VwdEtleShwYXJ0aWFsLCAncHJvZ3JhbScpO1xuICB9LFxuXG4gIENvbnRlbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uICgvKiBjb250ZW50ICovKSB7fSxcbiAgQ29tbWVudFN0YXRlbWVudDogZnVuY3Rpb24gKC8qIGNvbW1lbnQgKi8pIHt9LFxuXG4gIFN1YkV4cHJlc3Npb246IHZpc2l0U3ViRXhwcmVzc2lvbixcblxuICBQYXRoRXhwcmVzc2lvbjogZnVuY3Rpb24gKC8qIHBhdGggKi8pIHt9LFxuXG4gIFN0cmluZ0xpdGVyYWw6IGZ1bmN0aW9uICgvKiBzdHJpbmcgKi8pIHt9LFxuICBOdW1iZXJMaXRlcmFsOiBmdW5jdGlvbiAoLyogbnVtYmVyICovKSB7fSxcbiAgQm9vbGVhbkxpdGVyYWw6IGZ1bmN0aW9uICgvKiBib29sICovKSB7fSxcbiAgVW5kZWZpbmVkTGl0ZXJhbDogZnVuY3Rpb24gKC8qIGxpdGVyYWwgKi8pIHt9LFxuICBOdWxsTGl0ZXJhbDogZnVuY3Rpb24gKC8qIGxpdGVyYWwgKi8pIHt9LFxuXG4gIEhhc2g6IGZ1bmN0aW9uIChoYXNoKSB7XG4gICAgdGhpcy5hY2NlcHRBcnJheShoYXNoLnBhaXJzKTtcbiAgfSxcbiAgSGFzaFBhaXI6IGZ1bmN0aW9uIChwYWlyKSB7XG4gICAgdGhpcy5hY2NlcHRSZXF1aXJlZChwYWlyLCAndmFsdWUnKTtcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIHZpc2l0U3ViRXhwcmVzc2lvbihtdXN0YWNoZSkge1xuICB0aGlzLmFjY2VwdFJlcXVpcmVkKG11c3RhY2hlLCAncGF0aCcpO1xuICB0aGlzLmFjY2VwdEFycmF5KG11c3RhY2hlLnBhcmFtcyk7XG4gIHRoaXMuYWNjZXB0S2V5KG11c3RhY2hlLCAnaGFzaCcpO1xufVxuZnVuY3Rpb24gdmlzaXRCbG9jayhibG9jaykge1xuICB2aXNpdFN1YkV4cHJlc3Npb24uY2FsbCh0aGlzLCBibG9jayk7XG5cbiAgdGhpcy5hY2NlcHRLZXkoYmxvY2ssICdwcm9ncmFtJyk7XG4gIHRoaXMuYWNjZXB0S2V5KGJsb2NrLCAnaW52ZXJzZScpO1xufVxuZnVuY3Rpb24gdmlzaXRQYXJ0aWFsKHBhcnRpYWwpIHtcbiAgdGhpcy5hY2NlcHRSZXF1aXJlZChwYXJ0aWFsLCAnbmFtZScpO1xuICB0aGlzLmFjY2VwdEFycmF5KHBhcnRpYWwucGFyYW1zKTtcbiAgdGhpcy5hY2NlcHRLZXkocGFydGlhbCwgJ2hhc2gnKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlzaXRvcjtcbiJdfQ==","import Visitor from './visitor.js';\nfunction WhitespaceControl(options) {\n if (options === void 0) { options = {}; }\n this.options = options;\n}\nWhitespaceControl.prototype = new Visitor();\nWhitespaceControl.prototype.Program = function (program) {\n var doStandalone = !this.options.ignoreStandalone;\n var isRoot = !this.isRootSeen;\n this.isRootSeen = true;\n var body = program.body;\n for (var i = 0, l = body.length; i < l; i++) {\n var current = body[i], strip = this.accept(current);\n if (!strip) {\n continue;\n }\n var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot), _isNextWhitespace = isNextWhitespace(body, i, isRoot), openStandalone = strip.openStandalone && _isPrevWhitespace, closeStandalone = strip.closeStandalone && _isNextWhitespace, inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n if (strip.close) {\n omitRight(body, i, true);\n }\n if (strip.open) {\n omitLeft(body, i, true);\n }\n if (doStandalone && inlineStandalone) {\n omitRight(body, i);\n if (omitLeft(body, i)) {\n // If we are on a standalone node, save the indent info for partials\n if (current.type === 'PartialStatement') {\n // Pull out the whitespace from the final line\n current.indent = /([ \\t]+$)/.exec(body[i - 1].original)[1];\n }\n }\n }\n if (doStandalone && openStandalone) {\n omitRight((current.program || current.inverse).body);\n // Strip out the previous content node if it's whitespace only\n omitLeft(body, i);\n }\n if (doStandalone && closeStandalone) {\n // Always strip the next node\n omitRight(body, i);\n omitLeft((current.inverse || current.program).body);\n }\n }\n return program;\n};\nWhitespaceControl.prototype.BlockStatement =\n WhitespaceControl.prototype.DecoratorBlock =\n WhitespaceControl.prototype.PartialBlockStatement =\n function (block) {\n this.accept(block.program);\n this.accept(block.inverse);\n // Find the inverse program that is involved with whitespace stripping.\n var program = block.program || block.inverse, inverse = block.program && block.inverse, firstInverse = inverse, lastInverse = inverse;\n if (inverse && inverse.chained) {\n firstInverse = inverse.body[0].program;\n // Walk the inverse chain to find the last inverse that is actually in the chain.\n while (lastInverse.chained) {\n lastInverse = lastInverse.body[lastInverse.body.length - 1].program;\n }\n }\n var strip = {\n open: block.openStrip.open,\n close: block.closeStrip.close,\n // Determine the standalone candidacy. Basically flag our content as being possibly standalone\n // so our parent can determine if we actually are standalone\n openStandalone: isNextWhitespace(program.body),\n closeStandalone: isPrevWhitespace((firstInverse || program).body),\n };\n if (block.openStrip.close) {\n omitRight(program.body, null, true);\n }\n if (inverse) {\n var inverseStrip = block.inverseStrip;\n if (inverseStrip.open) {\n omitLeft(program.body, null, true);\n }\n if (inverseStrip.close) {\n omitRight(firstInverse.body, null, true);\n }\n if (block.closeStrip.open) {\n omitLeft(lastInverse.body, null, true);\n }\n // Find standalone else statements\n if (!this.options.ignoreStandalone &&\n isPrevWhitespace(program.body) &&\n isNextWhitespace(firstInverse.body)) {\n omitLeft(program.body);\n omitRight(firstInverse.body);\n }\n }\n else if (block.closeStrip.open) {\n omitLeft(program.body, null, true);\n }\n return strip;\n };\nWhitespaceControl.prototype.Decorator =\n WhitespaceControl.prototype.MustacheStatement = function (mustache) {\n return mustache.strip;\n };\nWhitespaceControl.prototype.PartialStatement =\n WhitespaceControl.prototype.CommentStatement = function (node) {\n /* istanbul ignore next */\n var strip = node.strip || {};\n return {\n inlineStandalone: true,\n open: strip.open,\n close: strip.close,\n };\n };\nfunction isPrevWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = body.length;\n }\n // Nodes that end with newlines are considered whitespace (but are special\n // cased for strip operations)\n var prev = body[i - 1], sibling = body[i - 2];\n if (!prev) {\n return isRoot;\n }\n if (prev.type === 'ContentStatement') {\n return (sibling || !isRoot ? /\\r?\\n\\s*?$/ : /(^|\\r?\\n)\\s*?$/).test(prev.original);\n }\n}\nfunction isNextWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = -1;\n }\n var next = body[i + 1], sibling = body[i + 2];\n if (!next) {\n return isRoot;\n }\n if (next.type === 'ContentStatement') {\n return (sibling || !isRoot ? /^\\s*?\\r?\\n/ : /^\\s*?(\\r?\\n|$)/).test(next.original);\n }\n}\n// Marks the node to the right of the position as omitted.\n// I.e. {{foo}}' ' will mark the ' ' node as omitted.\n//\n// If i is undefined, then the first child will be marked as such.\n//\n// If multiple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitRight(body, i, multiple) {\n var current = body[i == null ? 0 : i + 1];\n if (!current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.rightStripped)) {\n return;\n }\n var original = current.value;\n current.value = current.value.replace(multiple ? /^\\s+/ : /^[ \\t]*\\r?\\n?/, '');\n current.rightStripped = current.value !== original;\n}\n// Marks the node to the left of the position as omitted.\n// I.e. ' '{{foo}} will mark the ' ' node as omitted.\n//\n// If i is undefined then the last child will be marked as such.\n//\n// If multiple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitLeft(body, i, multiple) {\n var current = body[i == null ? body.length - 1 : i - 1];\n if (!current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.leftStripped)) {\n return;\n }\n // We omit the last node if it's whitespace only and not preceded by a non-content node.\n var original = current.value;\n current.value = current.value.replace(multiple ? /\\s+$/ : /[ \\t]+$/, '');\n current.leftStripped = current.value !== original;\n return current.leftStripped;\n}\nexport default WhitespaceControl;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hpdGVzcGFjZS1jb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3doaXRlc3BhY2UtY29udHJvbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFbkMsU0FBUyxpQkFBaUIsQ0FBQyxPQUFZO0lBQVosd0JBQUEsRUFBQSxZQUFZO0lBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ3pCLENBQUM7QUFDRCxpQkFBaUIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUU1QyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFVBQVUsT0FBTztJQUNyRCxJQUFNLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7SUFFcEQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBRXZCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDeEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzVDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDbkIsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFL0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsU0FBUztRQUNYLENBQUM7UUFFRCxJQUFJLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQ3ZELGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxD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QUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekUsT0FBTyxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQztJQUNsRCxPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDOUIsQ0FBQztBQUVELGVBQWUsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVmlzaXRvciBmcm9tICcuL3Zpc2l0b3IuanMnO1xuXG5mdW5jdGlvbiBXaGl0ZXNwYWNlQ29udHJvbChvcHRpb25zID0ge30pIHtcbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbn1cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZSA9IG5ldyBWaXNpdG9yKCk7XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5Qcm9ncmFtID0gZnVuY3Rpb24gKHByb2dyYW0pIHtcbiAgY29uc3QgZG9TdGFuZGFsb25lID0gIXRoaXMub3B0aW9ucy5pZ25vcmVTdGFuZGFsb25lO1xuXG4gIGxldCBpc1Jvb3QgPSAhdGhpcy5pc1Jvb3RTZWVuO1xuICB0aGlzLmlzUm9vdFNlZW4gPSB0cnVlO1xuXG4gIGxldCBib2R5ID0gcHJvZ3JhbS5ib2R5O1xuICBmb3IgKGxldCBpID0gMCwgbCA9IGJvZHkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgbGV0IGN1cnJlbnQgPSBib2R5W2ldLFxuICAgICAgc3RyaXAgPSB0aGlzLmFjY2VwdChjdXJyZW50KTtcblxuICAgIGlmICghc3RyaXApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGxldCBfaXNQcmV2V2hpdGVzcGFjZSA9IGlzUHJldldoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSxcbiAgICAgIF9pc05leHRXaGl0ZXNwYWNlID0gaXNOZXh0V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpLFxuICAgICAgb3BlblN0YW5kYWxvbmUgPSBzdHJpcC5vcGVuU3RhbmRhbG9uZSAmJiBfaXNQcmV2V2hpdGVzcGFjZSxcbiAgICAgIGNsb3NlU3RhbmRhbG9uZSA9IHN0cmlwLmNsb3NlU3RhbmRhbG9uZSAmJiBfaXNOZXh0V2hpdGVzcGFjZSxcbiAgICAgIGlubGluZVN0YW5kYWxvbmUgPVxuICAgICAgICBzdHJpcC5pbmxpbmVTdGFuZGFsb25lICYmIF9pc1ByZXZXaGl0ZXNwYWNlICYmIF9pc05leHRXaGl0ZXNwYWNlO1xuXG4gICAgaWYgKHN0cmlwLmNsb3NlKSB7XG4gICAgICBvbWl0UmlnaHQoYm9keSwgaSwgdHJ1ZSk7XG4gICAgfVxuICAgIGlmIChzdHJpcC5vcGVuKSB7XG4gICAgICBvbWl0TGVmdChib2R5LCBpLCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoZG9TdGFuZGFsb25lICYmIGlubGluZVN0YW5kYWxvbmUpIHtcbiAgICAgIG9taXRSaWdodChib2R5LCBpKTtcblxuICAgICAgaWYgKG9taXRMZWZ0KGJvZHksIGkpKSB7XG4gICAgICAgIC8vIElmIHdlIGFyZSBvbiBhIHN0YW5kYWxvbmUgbm9kZSwgc2F2ZSB0aGUgaW5kZW50IGluZm8gZm9yIHBhcnRpYWxzXG4gICAgICAgIGlmIChjdXJyZW50LnR5cGUgPT09ICdQYXJ0aWFsU3RhdGVtZW50Jykge1xuICAgICAgICAgIC8vIFB1bGwgb3V0IHRoZSB3aGl0ZXNwYWNlIGZyb20gdGhlIGZpbmFsIGxpbmVcbiAgICAgICAgICBjdXJyZW50LmluZGVudCA9IC8oWyBcXHRdKyQpLy5leGVjKGJvZHlbaSAtIDFdLm9yaWdpbmFsKVsxXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZG9TdGFuZGFsb25lICYmIG9wZW5TdGFuZGFsb25lKSB7XG4gICAgICBvbWl0UmlnaHQoKGN1cnJlbnQucHJvZ3JhbSB8fCBjdXJyZW50LmludmVyc2UpLmJvZHkpO1xuXG4gICAgICAvLyBTdHJpcCBvdXQgdGhlIHByZXZpb3VzIGNvbnRlbnQgbm9kZSBpZiBpdCdzIHdoaXRlc3BhY2Ugb25seVxuICAgICAgb21pdExlZnQoYm9keSwgaSk7XG4gICAgfVxuICAgIGlmIChkb1N0YW5kYWxvbmUgJiYgY2xvc2VTdGFuZGFsb25lKSB7XG4gICAgICAvLyBBbHdheXMgc3RyaXAgdGhlIG5leHQgbm9kZVxuICAgICAgb21pdFJpZ2h0KGJvZHksIGkpO1xuXG4gICAgICBvbWl0TGVmdCgoY3VycmVudC5pbnZlcnNlIHx8IGN1cnJlbnQucHJvZ3JhbSkuYm9keSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByb2dyYW07XG59O1xuXG5XaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQgPVxuICBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuRGVjb3JhdG9yQmxvY2sgPVxuICBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuUGFydGlhbEJsb2NrU3RhdGVtZW50ID1cbiAgICBmdW5jdGlvbiAoYmxvY2spIHtcbiAgICAgIHRoaXMuYWNjZXB0KGJsb2NrLnByb2dyYW0pO1xuICAgICAgdGhpcy5hY2NlcHQoYmxvY2suaW52ZXJzZSk7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGludmVyc2UgcHJvZ3JhbSB0aGF0IGlzIGludm9sdmVkIHdpdGggd2hpdGVzcGFjZSBzdHJpcHBpbmcuXG4gICAgICBsZXQgcHJvZ3JhbSA9IGJsb2NrLnByb2dyYW0gfHwgYmxvY2suaW52ZXJzZSxcbiAgICAgICAgaW52ZXJzZSA9IGJsb2NrLnByb2dyYW0gJiYgYmxvY2suaW52ZXJzZSxcbiAgICAgICAgZmlyc3RJbnZlcnNlID0gaW52ZXJzZSxcbiAgICAgICAgbGFzdEludmVyc2UgPSBpbnZlcnNlO1xuXG4gICAgICBpZiAoaW52ZXJzZSAmJiBpbnZlcnNlLmNoYWluZWQpIHtcbiAgICAgICAgZmlyc3RJbnZlcnNlID0gaW52ZXJzZS5ib2R5WzBdLnByb2dyYW07XG5cbiAgICAgICAgLy8gV2FsayB0aGUgaW52ZXJzZSBjaGFpbiB0byBmaW5kIHRoZSBsYXN0IGludmVyc2UgdGhhdCBpcyBhY3R1YWxseSBpbiB0aGUgY2hhaW4uXG4gICAgICAgIHdoaWxlIChsYXN0SW52ZXJzZS5jaGFpbmVkKSB7XG4gICAgICAgICAgbGFzdEludmVyc2UgPSBsYXN0SW52ZXJzZS5ib2R5W2xhc3RJbnZlcnNlLmJvZHkubGVuZ3RoIC0gMV0ucHJvZ3JhbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsZXQgc3RyaXAgPSB7XG4gICAgICAgIG9wZW46IGJsb2NrLm9wZW5TdHJpcC5vcGVuLFxuICAgICAgICBjbG9zZTogYmxvY2suY2xvc2VTdHJpcC5jbG9zZSxcblxuICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIHN0YW5kYWxvbmUgY2FuZGlkYWN5LiBCYXNpY2FsbHkgZmxhZyBvdXIgY29udGVudCBhcyBiZWluZyBwb3NzaWJseSBzdGFuZGFsb25lXG4gICAgICAgIC8vIHNvIG91ciBwYXJlbnQgY2FuIGRldGVybWluZSBpZiB3ZSBhY3R1YWxseSBhcmUgc3RhbmRhbG9uZVxuICAgICAgICBvcGVuU3RhbmRhbG9uZTogaXNOZXh0V2hpdGVzcGFjZShwcm9ncmFtLmJvZHkpLFxuICAgICAgICBjbG9zZVN0YW5kYWxvbmU6IGlzUHJldldoaXRlc3BhY2UoKGZpcnN0SW52ZXJzZSB8fCBwcm9ncmFtKS5ib2R5KSxcbiAgICAgIH07XG5cbiAgICAgIGlmIChibG9jay5vcGVuU3RyaXAuY2xvc2UpIHtcbiAgICAgICAgb21pdFJpZ2h0KHByb2dyYW0uYm9keSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgIGxldCBpbnZlcnNlU3RyaXAgPSBibG9jay5pbnZlcnNlU3RyaXA7XG5cbiAgICAgICAgaWYgKGludmVyc2VTdHJpcC5vcGVuKSB7XG4gICAgICAgICAgb21pdExlZnQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbnZlcnNlU3RyaXAuY2xvc2UpIHtcbiAgICAgICAgICBvbWl0UmlnaHQoZmlyc3RJbnZlcnNlLmJvZHksIG51bGwsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHtcbiAgICAgICAgICBvbWl0TGVmdChsYXN0SW52ZXJzZS5ib2R5LCBudWxsLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpbmQgc3RhbmRhbG9uZSBlbHNlIHN0YXRlbWVudHNcbiAgICAgICAgaWYgKFxuICAgICAgICAgICF0aGlzLm9wdGlvbnMuaWdub3JlU3RhbmRhbG9uZSAmJlxuICAgICAgICAgIGlzUHJldldoaXRlc3BhY2UocHJvZ3JhbS5ib2R5KSAmJlxuICAgICAgICAgIGlzTmV4dFdoaXRlc3BhY2UoZmlyc3RJbnZlcnNlLmJvZHkpXG4gICAgICAgICkge1xuICAgICAgICAgIG9taXRMZWZ0KHByb2dyYW0uYm9keSk7XG4gICAgICAgICAgb21pdFJpZ2h0KGZpcnN0SW52ZXJzZS5ib2R5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHtcbiAgICAgICAgb21pdExlZnQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN0cmlwO1xuICAgIH07XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5EZWNvcmF0b3IgPVxuICBXaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuTXVzdGFjaGVTdGF0ZW1lbnQgPSBmdW5jdGlvbiAobXVzdGFjaGUpIHtcbiAgICByZXR1cm4gbXVzdGFjaGUuc3RyaXA7XG4gIH07XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5QYXJ0aWFsU3RhdGVtZW50ID1cbiAgV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkNvbW1lbnRTdGF0ZW1lbnQgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgbGV0IHN0cmlwID0gbm9kZS5zdHJpcCB8fCB7fTtcbiAgICByZXR1cm4ge1xuICAgICAgaW5saW5lU3RhbmRhbG9uZTogdHJ1ZSxcbiAgICAgIG9wZW46IHN0cmlwLm9wZW4sXG4gICAgICBjbG9zZTogc3RyaXAuY2xvc2UsXG4gICAgfTtcbiAgfTtcblxuZnVuY3Rpb24gaXNQcmV2V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpIHtcbiAgaWYgKGkgPT09IHVuZGVmaW5lZCkge1xuICAgIGkgPSBib2R5Lmxlbmd0aDtcbiAgfVxuXG4gIC8vIE5vZGVzIHRoYXQgZW5kIHdpdGggbmV3bGluZXMgYXJlIGNvbnNpZGVyZWQgd2hpdGVzcGFjZSAoYnV0IGFyZSBzcGVjaWFsXG4gIC8vIGNhc2VkIGZvciBzdHJpcCBvcGVyYXRpb25zKVxuICBsZXQgcHJldiA9IGJvZHlbaSAtIDFdLFxuICAgIHNpYmxpbmcgPSBib2R5W2kgLSAyXTtcbiAgaWYgKCFwcmV2KSB7XG4gICAgcmV0dXJuIGlzUm9vdDtcbiAgfVxuXG4gIGlmIChwcmV2LnR5cGUgPT09ICdDb250ZW50U3RhdGVtZW50Jykge1xuICAgIHJldHVybiAoc2libGluZyB8fCAhaXNSb290ID8gL1xccj9cXG5cXHMqPyQvIDogLyhefFxccj9cXG4pXFxzKj8kLykudGVzdChcbiAgICAgIHByZXYub3JpZ2luYWxcbiAgICApO1xuICB9XG59XG5mdW5jdGlvbiBpc05leHRXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCkge1xuICBpZiAoaSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaSA9IC0xO1xuICB9XG5cbiAgbGV0IG5leHQgPSBib2R5W2kgKyAxXSxcbiAgICBzaWJsaW5nID0gYm9keVtpICsgMl07XG4gIGlmICghbmV4dCkge1xuICAgIHJldHVybiBpc1Jvb3Q7XG4gIH1cblxuICBpZiAobmV4dC50eXBlID09PSAnQ29udGVudFN0YXRlbWVudCcpIHtcbiAgICByZXR1cm4gKHNpYmxpbmcgfHwgIWlzUm9vdCA/IC9eXFxzKj9cXHI/XFxuLyA6IC9eXFxzKj8oXFxyP1xcbnwkKS8pLnRlc3QoXG4gICAgICBuZXh0Lm9yaWdpbmFsXG4gICAgKTtcbiAgfVxufVxuXG4vLyBNYXJrcyB0aGUgbm9kZSB0byB0aGUgcmlnaHQgb2YgdGhlIHBvc2l0aW9uIGFzIG9taXR0ZWQuXG4vLyBJLmUuIHt7Zm9vfX0nICcgd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBhcyBvbWl0dGVkLlxuLy9cbi8vIElmIGkgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSBmaXJzdCBjaGlsZCB3aWxsIGJlIG1hcmtlZCBhcyBzdWNoLlxuLy9cbi8vIElmIG11bHRpcGxlIGlzIHRydXRoeSB0aGVuIGFsbCB3aGl0ZXNwYWNlIHdpbGwgYmUgc3RyaXBwZWQgb3V0IHVudGlsIG5vbi13aGl0ZXNwYWNlXG4vLyBjb250ZW50IGlzIG1ldC5cbmZ1bmN0aW9uIG9taXRSaWdodChib2R5LCBpLCBtdWx0aXBsZSkge1xuICBsZXQgY3VycmVudCA9IGJvZHlbaSA9PSBudWxsID8gMCA6IGkgKyAxXTtcbiAgaWYgKFxuICAgICFjdXJyZW50IHx8XG4gICAgY3VycmVudC50eXBlICE9PSAnQ29udGVudFN0YXRlbWVudCcgfHxcbiAgICAoIW11bHRpcGxlICYmIGN1cnJlbnQucmlnaHRTdHJpcHBlZClcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IG9yaWdpbmFsID0gY3VycmVudC52YWx1ZTtcbiAgY3VycmVudC52YWx1ZSA9IGN1cnJlbnQudmFsdWUucmVwbGFjZShcbiAgICBtdWx0aXBsZSA/IC9eXFxzKy8gOiAvXlsgXFx0XSpcXHI/XFxuPy8sXG4gICAgJydcbiAgKTtcbiAgY3VycmVudC5yaWdodFN0cmlwcGVkID0gY3VycmVudC52YWx1ZSAhPT0gb3JpZ2luYWw7XG59XG5cbi8vIE1hcmtzIHRoZSBub2RlIHRvIHRoZSBsZWZ0IG9mIHRoZSBwb3NpdGlvbiBhcyBvbWl0dGVkLlxuLy8gSS5lLiAnICd7e2Zvb319IHdpbGwgbWFyayB0aGUgJyAnIG5vZGUgYXMgb21pdHRlZC5cbi8vXG4vLyBJZiBpIGlzIHVuZGVmaW5lZCB0aGVuIHRoZSBsYXN0IGNoaWxkIHdpbGwgYmUgbWFya2VkIGFzIHN1Y2guXG4vL1xuLy8gSWYgbXVsdGlwbGUgaXMgdHJ1dGh5IHRoZW4gYWxsIHdoaXRlc3BhY2Ugd2lsbCBiZSBzdHJpcHBlZCBvdXQgdW50aWwgbm9uLXdoaXRlc3BhY2Vcbi8vIGNvbnRlbnQgaXMgbWV0LlxuZnVuY3Rpb24gb21pdExlZnQoYm9keSwgaSwgbXVsdGlwbGUpIHtcbiAgbGV0IGN1cnJlbnQgPSBib2R5W2kgPT0gbnVsbCA/IGJvZHkubGVuZ3RoIC0gMSA6IGkgLSAxXTtcbiAgaWYgKFxuICAgICFjdXJyZW50IHx8XG4gICAgY3VycmVudC50eXBlICE9PSAnQ29udGVudFN0YXRlbWVudCcgfHxcbiAgICAoIW11bHRpcGxlICYmIGN1cnJlbnQubGVmdFN0cmlwcGVkKVxuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBXZSBvbWl0IHRoZSBsYXN0IG5vZGUgaWYgaXQncyB3aGl0ZXNwYWNlIG9ubHkgYW5kIG5vdCBwcmVjZWRlZCBieSBhIG5vbi1jb250ZW50IG5vZGUuXG4gIGxldCBvcmlnaW5hbCA9IGN1cnJlbnQudmFsdWU7XG4gIGN1cnJlbnQudmFsdWUgPSBjdXJyZW50LnZhbHVlLnJlcGxhY2UobXVsdGlwbGUgPyAvXFxzKyQvIDogL1sgXFx0XSskLywgJycpO1xuICBjdXJyZW50LmxlZnRTdHJpcHBlZCA9IGN1cnJlbnQudmFsdWUgIT09IG9yaWdpbmFsO1xuICByZXR1cm4gY3VycmVudC5sZWZ0U3RyaXBwZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFdoaXRlc3BhY2VDb250cm9sO1xuIl19","/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function () {\n var o = function (k, v, o, l) { for (o = o || {}, l = k.length; l--; o[k[l]] = v)\n ; return o; }, $V0 = [2, 52], $V1 = [1, 20], $V2 = [5, 14, 15, 19, 29, 34, 39, 44, 47, 48, 53, 57, 61], $V3 = [1, 44], $V4 = [1, 40], $V5 = [1, 43], $V6 = [1, 33], $V7 = [1, 34], $V8 = [1, 35], $V9 = [1, 36], $Va = [1, 37], $Vb = [1, 42], $Vc = [1, 46], $Vd = [14, 15, 19, 29, 34, 39, 44, 47, 48, 53, 57, 61], $Ve = [14, 15, 19, 29, 34, 44, 47, 48, 53, 57, 61], $Vf = [15, 18], $Vg = [14, 15, 19, 29, 34, 47, 48, 53, 57, 61], $Vh = [33, 67, 73, 75, 84, 85, 86, 87, 88, 89], $Vi = [23, 33, 56, 67, 68, 73, 75, 77, 79, 84, 85, 86, 87, 88, 89], $Vj = [1, 62], $Vk = [1, 63], $Vl = [23, 33, 56, 68, 73, 79], $Vm = [23, 33, 56, 67, 68, 73, 75, 77, 79, 84, 85, 86, 87, 88, 89, 92, 93], $Vn = [2, 51], $Vo = [1, 64], $Vp = [67, 73, 75, 77, 84, 85, 86, 87, 88, 89], $Vq = [56, 67, 73, 75, 84, 85, 86, 87, 88, 89], $Vr = [1, 75], $Vs = [1, 76], $Vt = [1, 83], $Vu = [33, 67, 73, 75, 79, 84, 85, 86, 87, 88, 89], $Vv = [23, 67, 73, 75, 84, 85, 86, 87, 88, 89], $Vw = [67, 68, 73, 75, 84, 85, 86, 87, 88, 89], $Vx = [33, 79], $Vy = [1, 134], $Vz = [73, 81];\n var parser = { trace: function trace() { },\n yy: {},\n symbols_: { \"error\": 2, \"root\": 3, \"program\": 4, \"EOF\": 5, \"program_repetition0\": 6, \"statement\": 7, \"mustache\": 8, \"block\": 9, \"rawBlock\": 10, \"partial\": 11, \"partialBlock\": 12, \"content\": 13, \"COMMENT\": 14, \"CONTENT\": 15, \"openRawBlock\": 16, \"rawBlock_repetition0\": 17, \"END_RAW_BLOCK\": 18, \"OPEN_RAW_BLOCK\": 19, \"helperName\": 20, \"openRawBlock_repetition0\": 21, \"openRawBlock_option0\": 22, \"CLOSE_RAW_BLOCK\": 23, \"openBlock\": 24, \"block_option0\": 25, \"closeBlock\": 26, \"openInverse\": 27, \"block_option1\": 28, \"OPEN_BLOCK\": 29, \"openBlock_repetition0\": 30, \"openBlock_option0\": 31, \"openBlock_option1\": 32, \"CLOSE\": 33, \"OPEN_INVERSE\": 34, \"openInverse_repetition0\": 35, \"openInverse_option0\": 36, \"openInverse_option1\": 37, \"openInverseChain\": 38, \"OPEN_INVERSE_CHAIN\": 39, \"openInverseChain_repetition0\": 40, \"openInverseChain_option0\": 41, \"openInverseChain_option1\": 42, \"inverseAndProgram\": 43, \"INVERSE\": 44, \"inverseChain\": 45, \"inverseChain_option0\": 46, \"OPEN_ENDBLOCK\": 47, \"OPEN\": 48, \"hash\": 49, \"expr\": 50, \"mustache_repetition0\": 51, \"mustache_option0\": 52, \"OPEN_UNESCAPED\": 53, \"mustache_repetition1\": 54, \"mustache_option1\": 55, \"CLOSE_UNESCAPED\": 56, \"OPEN_PARTIAL\": 57, \"partial_repetition0\": 58, \"partial_option0\": 59, \"openPartialBlock\": 60, \"OPEN_PARTIAL_BLOCK\": 61, \"openPartialBlock_repetition0\": 62, \"openPartialBlock_option0\": 63, \"exprHead\": 64, \"arrayLiteral\": 65, \"sexpr\": 66, \"OPEN_SEXPR\": 67, \"CLOSE_SEXPR\": 68, \"sexpr_repetition0\": 69, \"sexpr_option0\": 70, \"hash_repetition_plus0\": 71, \"hashSegment\": 72, \"ID\": 73, \"EQUALS\": 74, \"OPEN_ARRAY\": 75, \"arrayLiteral_repetition0\": 76, \"CLOSE_ARRAY\": 77, \"blockParams\": 78, \"OPEN_BLOCK_PARAMS\": 79, \"blockParams_repetition_plus0\": 80, \"CLOSE_BLOCK_PARAMS\": 81, \"path\": 82, \"dataName\": 83, \"STRING\": 84, \"NUMBER\": 85, \"BOOLEAN\": 86, \"UNDEFINED\": 87, \"NULL\": 88, \"DATA\": 89, \"pathSegments\": 90, \"sep\": 91, \"SEP\": 92, \"PRIVATE_SEP\": 93, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"EOF\", 14: \"COMMENT\", 15: \"CONTENT\", 18: \"END_RAW_BLOCK\", 19: \"OPEN_RAW_BLOCK\", 23: \"CLOSE_RAW_BLOCK\", 29: \"OPEN_BLOCK\", 33: \"CLOSE\", 34: \"OPEN_INVERSE\", 39: \"OPEN_INVERSE_CHAIN\", 44: \"INVERSE\", 47: \"OPEN_ENDBLOCK\", 48: \"OPEN\", 53: \"OPEN_UNESCAPED\", 56: \"CLOSE_UNESCAPED\", 57: \"OPEN_PARTIAL\", 61: \"OPEN_PARTIAL_BLOCK\", 67: \"OPEN_SEXPR\", 68: \"CLOSE_SEXPR\", 73: \"ID\", 74: \"EQUALS\", 75: \"OPEN_ARRAY\", 77: \"CLOSE_ARRAY\", 79: \"OPEN_BLOCK_PARAMS\", 81: \"CLOSE_BLOCK_PARAMS\", 84: \"STRING\", 85: \"NUMBER\", 86: \"BOOLEAN\", 87: \"UNDEFINED\", 88: \"NULL\", 89: \"DATA\", 92: \"SEP\", 93: \"PRIVATE_SEP\" },\n productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 3], [8, 5], [8, 5], [11, 5], [12, 3], [60, 5], [50, 1], [50, 1], [64, 1], [64, 1], [66, 3], [66, 5], [49, 1], [72, 3], [65, 3], [78, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [83, 2], [91, 1], [91, 1], [82, 3], [82, 1], [90, 3], [90, 1], [6, 0], [6, 2], [17, 0], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [51, 0], [51, 2], [52, 0], [52, 1], [54, 0], [54, 2], [55, 0], [55, 1], [58, 0], [58, 2], [59, 0], [59, 1], [62, 0], [62, 2], [63, 0], [63, 1], [69, 0], [69, 2], [70, 0], [70, 1], [71, 1], [71, 2], [76, 0], [76, 2], [80, 1], [80, 2]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n /* this == yyval */\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n break;\n case 2:\n this.$ = yy.prepareProgram($$[$0]);\n break;\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 20:\n case 28:\n case 29:\n case 30:\n case 31:\n case 38:\n case 39:\n case 46:\n case 47:\n this.$ = $$[$0];\n break;\n case 9:\n this.$ = {\n type: 'CommentStatement',\n value: yy.stripComment($$[$0]),\n strip: yy.stripFlags($$[$0], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n break;\n case 10:\n this.$ = {\n type: 'ContentStatement',\n original: $$[$0],\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n break;\n case 11:\n this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);\n break;\n case 12:\n this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1] };\n break;\n case 13:\n this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], false, this._$);\n break;\n case 14:\n this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], true, this._$);\n break;\n case 15:\n this.$ = { open: $$[$0 - 5], path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };\n break;\n case 16:\n case 17:\n this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };\n break;\n case 18:\n this.$ = { strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]), program: $$[$0] };\n break;\n case 19:\n var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], false, this._$), program = yy.prepareProgram([inverse], $$[$0 - 1].loc);\n program.chained = true;\n this.$ = { strip: $$[$0 - 2].strip, program: program, chain: true };\n break;\n case 21:\n this.$ = { path: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 2], $$[$0]) };\n break;\n case 22:\n this.$ = yy.prepareMustache(yy.syntax.hash($$[$0 - 1], yy.locInfo(this._$), { yy: yy, syntax: 'expr' }), [], undefined, $$[$0 - 2], yy.stripFlags($$[$0 - 2], $$[$0]), this._$);\n break;\n case 23:\n case 24:\n this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);\n break;\n case 25:\n this.$ = {\n type: 'PartialStatement',\n name: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1],\n indent: '',\n strip: yy.stripFlags($$[$0 - 4], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n break;\n case 26:\n this.$ = yy.preparePartialBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);\n break;\n case 27:\n this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 4], $$[$0]) };\n break;\n case 32:\n this.$ = yy.syntax.hash($$[$0 - 1], yy.locInfo(this._$), { yy: yy, syntax: 'expr' });\n break;\n case 33:\n this.$ = {\n type: 'SubExpression',\n path: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1],\n loc: yy.locInfo(this._$)\n };\n break;\n case 34:\n this.$ = { type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$) };\n break;\n case 35:\n this.$ = { type: 'HashPair', key: yy.id($$[$0 - 2]), value: $$[$0], loc: yy.locInfo(this._$) };\n break;\n case 36:\n this.$ = yy.syntax.square($$[$0 - 1], yy.locInfo(this._$), { yy: yy, syntax: 'expr' });\n break;\n case 37:\n this.$ = yy.id($$[$0 - 1]);\n break;\n case 40:\n this.$ = { type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$) };\n break;\n case 41:\n this.$ = { type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$) };\n break;\n case 42:\n this.$ = { type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$) };\n break;\n case 43:\n this.$ = { type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$) };\n break;\n case 44:\n this.$ = { type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$) };\n break;\n case 45:\n this.$ = yy.preparePath(true, false, $$[$0], this._$);\n break;\n case 48:\n this.$ = yy.preparePath(false, $$[$0 - 2], $$[$0], this._$);\n break;\n case 49:\n this.$ = yy.preparePath(false, false, $$[$0], this._$);\n break;\n case 50:\n $$[$0 - 2].push({ part: yy.id($$[$0]), original: $$[$0], separator: $$[$0 - 1] });\n this.$ = $$[$0 - 2];\n break;\n case 51:\n this.$ = [{ part: yy.id($$[$0]), original: $$[$0] }];\n break;\n case 52:\n case 54:\n case 56:\n case 64:\n case 70:\n case 76:\n case 84:\n case 88:\n case 92:\n case 96:\n case 100:\n case 106:\n this.$ = [];\n break;\n case 53:\n case 55:\n case 57:\n case 65:\n case 71:\n case 77:\n case 85:\n case 89:\n case 93:\n case 97:\n case 101:\n case 105:\n case 107:\n case 109:\n $$[$0 - 1].push($$[$0]);\n break;\n case 104:\n case 108:\n this.$ = [$$[$0]];\n break;\n }\n },\n table: [o([5, 14, 15, 19, 29, 34, 48, 53, 57, 61], $V0, { 3: 1, 4: 2, 6: 3 }), { 1: [3] }, { 5: [1, 4] }, o([5, 39, 44, 47], [2, 2], { 7: 5, 8: 6, 9: 7, 10: 8, 11: 9, 12: 10, 13: 11, 24: 15, 27: 16, 16: 17, 60: 19, 14: [1, 12], 15: $V1, 19: [1, 23], 29: [1, 21], 34: [1, 22], 48: [1, 13], 53: [1, 14], 57: [1, 18], 61: [1, 24] }), { 1: [2, 1] }, o($V2, [2, 53]), o($V2, [2, 3]), o($V2, [2, 4]), o($V2, [2, 5]), o($V2, [2, 6]), o($V2, [2, 7]), o($V2, [2, 8]), o($V2, [2, 9]), { 20: 28, 49: 25, 50: 26, 64: 29, 65: 38, 66: 39, 67: $V3, 71: 27, 72: 30, 73: $V4, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, { 20: 28, 50: 45, 64: 29, 65: 38, 66: 39, 67: $V3, 73: $Vc, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, o($Vd, $V0, { 6: 3, 4: 47 }), o($Ve, $V0, { 6: 3, 4: 48 }), o($Vf, [2, 54], { 17: 49 }), { 20: 28, 50: 50, 64: 29, 65: 38, 66: 39, 67: $V3, 73: $Vc, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, o($Vg, $V0, { 6: 3, 4: 51 }), o([5, 14, 15, 18, 19, 29, 34, 39, 44, 47, 48, 53, 57, 61], [2, 10]), { 20: 52, 64: 53, 65: 38, 66: 39, 67: $V3, 73: $Vc, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, { 20: 54, 64: 53, 65: 38, 66: 39, 67: $V3, 73: $Vc, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, { 20: 55, 64: 53, 65: 38, 66: 39, 67: $V3, 73: $Vc, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, { 20: 28, 50: 56, 64: 29, 65: 38, 66: 39, 67: $V3, 73: $Vc, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, { 33: [1, 57] }, o($Vh, [2, 84], { 51: 58 }), o([23, 33, 56, 68, 79], [2, 34], { 72: 59, 73: [1, 60] }), o($Vi, [2, 28]), o($Vi, [2, 29], { 91: 61, 92: $Vj, 93: $Vk }), o($Vl, [2, 104]), o($Vi, [2, 38]), o($Vi, [2, 39]), o($Vi, [2, 40]), o($Vi, [2, 41]), o($Vi, [2, 42]), o($Vi, [2, 43]), o($Vi, [2, 44]), o($Vm, [2, 30]), o($Vm, [2, 31]), o([23, 33, 56, 67, 68, 73, 75, 79, 84, 85, 86, 87, 88, 89, 92, 93], $Vn, { 74: $Vo }), o($Vi, [2, 49], { 91: 65, 92: $Vj, 93: $Vk }), { 73: $Vc, 90: 66 }, o($Vp, [2, 106], { 76: 67 }), { 20: 28, 49: 68, 50: 69, 64: 29, 65: 38, 66: 39, 67: $V3, 71: 27, 72: 30, 73: $V4, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, o($Vq, [2, 88], { 54: 70 }), o($Vm, $Vn), { 25: 71, 38: 73, 39: $Vr, 43: 74, 44: $Vs, 45: 72, 47: [2, 60] }, { 28: 77, 43: 78, 44: $Vs, 47: [2, 62] }, { 13: 80, 15: $V1, 18: [1, 79] }, o($Vh, [2, 92], { 58: 81 }), { 26: 82, 47: $Vt }, o($Vu, [2, 64], { 30: 84 }), { 91: 61, 92: $Vj, 93: $Vk }, o($Vu, [2, 70], { 35: 85 }), o($Vv, [2, 56], { 21: 86 }), o($Vh, [2, 96], { 62: 87 }), o($V2, [2, 22]), { 20: 28, 33: [2, 86], 49: 90, 50: 89, 52: 88, 64: 29, 65: 38, 66: 39, 67: $V3, 71: 27, 72: 30, 73: $V4, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, o($Vl, [2, 105]), { 74: $Vo }, { 73: $Vc, 90: 91 }, { 73: [2, 46] }, { 73: [2, 47] }, { 20: 28, 50: 92, 64: 29, 65: 38, 66: 39, 67: $V3, 73: $Vc, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, { 73: [1, 93] }, o($Vi, [2, 45], { 91: 65, 92: $Vj, 93: $Vk }), { 20: 28, 50: 95, 64: 29, 65: 38, 66: 39, 67: $V3, 73: $Vc, 75: $V5, 77: [1, 94], 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, { 68: [1, 96] }, o($Vw, [2, 100], { 69: 97 }), { 20: 28, 49: 100, 50: 99, 55: 98, 56: [2, 90], 64: 29, 65: 38, 66: 39, 67: $V3, 71: 27, 72: 30, 73: $V4, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, { 26: 101, 47: $Vt }, { 47: [2, 61] }, o($Vd, $V0, { 6: 3, 4: 102 }), { 47: [2, 20] }, { 20: 103, 64: 53, 65: 38, 66: 39, 67: $V3, 73: $Vc, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, o($Vg, $V0, { 6: 3, 4: 104 }), { 26: 105, 47: $Vt }, { 47: [2, 63] }, o($V2, [2, 11]), o($Vf, [2, 55]), { 20: 28, 33: [2, 94], 49: 108, 50: 107, 59: 106, 64: 29, 65: 38, 66: 39, 67: $V3, 71: 27, 72: 30, 73: $V4, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, o($V2, [2, 26]), { 20: 109, 64: 53, 65: 38, 66: 39, 67: $V3, 73: $Vc, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, o($Vx, [2, 66], { 71: 27, 20: 28, 64: 29, 72: 30, 82: 31, 83: 32, 65: 38, 66: 39, 90: 41, 31: 110, 50: 111, 49: 112, 67: $V3, 73: $V4, 75: $V5, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb }), o($Vx, [2, 72], { 71: 27, 20: 28, 64: 29, 72: 30, 82: 31, 83: 32, 65: 38, 66: 39, 90: 41, 36: 113, 50: 114, 49: 115, 67: $V3, 73: $V4, 75: $V5, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb }), { 20: 28, 22: 116, 23: [2, 58], 49: 118, 50: 117, 64: 29, 65: 38, 66: 39, 67: $V3, 71: 27, 72: 30, 73: $V4, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, { 20: 28, 33: [2, 98], 49: 121, 50: 120, 63: 119, 64: 29, 65: 38, 66: 39, 67: $V3, 71: 27, 72: 30, 73: $V4, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, { 33: [1, 122] }, o($Vh, [2, 85]), { 33: [2, 87] }, o($Vi, [2, 48], { 91: 65, 92: $Vj, 93: $Vk }), o($Vl, [2, 35]), o($Vm, [2, 50]), o($Vm, [2, 36]), o($Vp, [2, 107]), o($Vm, [2, 32]), { 20: 28, 49: 125, 50: 124, 64: 29, 65: 38, 66: 39, 67: $V3, 68: [2, 102], 70: 123, 71: 27, 72: 30, 73: $V4, 75: $V5, 82: 31, 83: 32, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb, 90: 41 }, { 56: [1, 126] }, o($Vq, [2, 89]), { 56: [2, 91] }, o($V2, [2, 13]), { 38: 73, 39: $Vr, 43: 74, 44: $Vs, 45: 128, 46: 127, 47: [2, 82] }, o($Vu, [2, 76], { 40: 129 }), { 47: [2, 18] }, o($V2, [2, 14]), { 33: [1, 130] }, o($Vh, [2, 93]), { 33: [2, 95] }, { 33: [1, 131] }, { 32: 132, 33: [2, 68], 78: 133, 79: $Vy }, o($Vu, [2, 65]), o($Vx, [2, 67]), { 33: [2, 74], 37: 135, 78: 136, 79: $Vy }, o($Vu, [2, 71]), o($Vx, [2, 73]), { 23: [1, 137] }, o($Vv, [2, 57]), { 23: [2, 59] }, { 33: [1, 138] }, o($Vh, [2, 97]), { 33: [2, 99] }, o($V2, [2, 23]), { 68: [1, 139] }, o($Vw, [2, 101]), { 68: [2, 103] }, o($V2, [2, 24]), { 47: [2, 19] }, { 47: [2, 83] }, o($Vx, [2, 78], { 71: 27, 20: 28, 64: 29, 72: 30, 82: 31, 83: 32, 65: 38, 66: 39, 90: 41, 41: 140, 50: 141, 49: 142, 67: $V3, 73: $V4, 75: $V5, 84: $V6, 85: $V7, 86: $V8, 87: $V9, 88: $Va, 89: $Vb }), o($V2, [2, 25]), o($V2, [2, 21]), { 33: [1, 143] }, { 33: [2, 69] }, { 73: [1, 145], 80: 144 }, { 33: [1, 146] }, { 33: [2, 75] }, o($Vf, [2, 12]), o($Vg, [2, 27]), o($Vm, [2, 33]), { 33: [2, 80], 42: 147, 78: 148, 79: $Vy }, o($Vu, [2, 77]), o($Vx, [2, 79]), o($Vd, [2, 15]), { 73: [1, 150], 81: [1, 149] }, o($Vz, [2, 108]), o($Ve, [2, 16]), { 33: [1, 151] }, { 33: [2, 81] }, { 33: [2, 37] }, o($Vz, [2, 109]), o($Vd, [2, 17])],\n defaultActions: { 4: [2, 1], 62: [2, 46], 63: [2, 47], 72: [2, 61], 74: [2, 20], 78: [2, 63], 90: [2, 87], 100: [2, 91], 104: [2, 18], 108: [2, 95], 118: [2, 59], 121: [2, 99], 125: [2, 103], 127: [2, 19], 128: [2, 83], 133: [2, 69], 136: [2, 75], 148: [2, 81], 149: [2, 37] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n }\n else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n }\n else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack: var lex = function () {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n };\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n }\n else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n }\n else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n }\n else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n } };\n /* generated by jison-lex 0.3.4 */\n var lexer = (function () {\n var lexer = ({\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n }\n else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n }\n else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function () {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n }\n else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function (n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function (match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n }\n else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n // return next match in input\n next: function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n }\n else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n }\n else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n }\n else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n }\n else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n }\n else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n }\n else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n }\n else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n }\n else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n function strip(start, end) {\n return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);\n }\n var YYSTATE = YY_START;\n switch ($avoiding_name_collisions) {\n case 0:\n if (yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n strip(0, 1);\n this.begin(\"mu\");\n }\n else if (yy_.yytext.slice(-1) === \"\\\\\") {\n strip(0, 1);\n this.begin(\"emu\");\n }\n else {\n this.begin(\"mu\");\n }\n if (yy_.yytext)\n return 15;\n break;\n case 1:\n return 15;\n break;\n case 2:\n this.popState();\n return 15;\n break;\n case 3:\n this.begin('raw');\n return 15;\n break;\n case 4:\n this.popState();\n // Should be using `this.topState()` below, but it currently\n // returns the second top instead of the first top. Opened an\n // issue about it at https://github.com/zaach/jison/issues/291\n if (this.conditionStack[this.conditionStack.length - 1] === 'raw') {\n return 15;\n }\n else {\n strip(5, 9);\n return 18;\n }\n break;\n case 5:\n return 15;\n break;\n case 6:\n this.popState();\n return 14;\n break;\n case 7:\n return 67;\n break;\n case 8:\n return 68;\n break;\n case 9:\n if (yy.syntax.square === 'string') {\n this.unput(yy_.yytext);\n // escaped literal\n this.begin('escl');\n }\n else {\n return 75;\n }\n break;\n case 10:\n return 77;\n break;\n case 11:\n return 19;\n break;\n case 12:\n this.popState();\n this.begin('raw');\n return 23;\n break;\n case 13:\n return 57;\n break;\n case 14:\n return 61;\n break;\n case 15:\n return 29;\n break;\n case 16:\n return 47;\n break;\n case 17:\n this.popState();\n return 44;\n break;\n case 18:\n this.popState();\n return 44;\n break;\n case 19:\n return 34;\n break;\n case 20:\n return 39;\n break;\n case 21:\n return 53;\n break;\n case 22:\n return 48;\n break;\n case 23:\n this.unput(yy_.yytext);\n this.popState();\n this.begin('com');\n break;\n case 24:\n this.popState();\n return 14;\n break;\n case 25:\n return 48;\n break;\n case 26:\n return 74;\n break;\n case 27:\n return 73;\n break;\n case 28:\n return 73;\n break;\n case 29:\n return 93;\n break;\n case 30:\n return 92;\n break;\n case 31: // ignore whitespace\n break;\n case 32:\n this.popState();\n return 56;\n break;\n case 33:\n this.popState();\n return 33;\n break;\n case 34:\n yy_.yytext = strip(1, 2).replace(/\\\\\"/g, '\"');\n return 84;\n break;\n case 35:\n yy_.yytext = strip(1, 2).replace(/\\\\'/g, \"'\");\n return 84;\n break;\n case 36:\n return 89;\n break;\n case 37:\n return 86;\n break;\n case 38:\n return 86;\n break;\n case 39:\n return 87;\n break;\n case 40:\n return 88;\n break;\n case 41:\n return 85;\n break;\n case 42:\n return 79;\n break;\n case 43:\n return 81;\n break;\n case 44:\n return 73;\n break;\n case 45:\n yy_.yytext = yy_.yytext.replace(/\\\\([\\\\\\]])/g, '$1');\n this.popState();\n return 73;\n break;\n case 46:\n return 'INVALID';\n break;\n case 47:\n return 5;\n break;\n }\n },\n rules: [/^(?:[^\\x00]*?(?=(\\{\\{)))/, /^(?:[^\\x00]+)/, /^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/, /^(?:\\{\\{\\{\\{(?=[^/]))/, /^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/, /^(?:[^\\x00]+?(?=(\\{\\{\\{\\{)))/, /^(?:[\\s\\S]*?--(~)?\\}\\})/, /^(?:\\()/, /^(?:\\))/, /^(?:\\[)/, /^(?:\\])/, /^(?:\\{\\{\\{\\{)/, /^(?:\\}\\}\\}\\})/, /^(?:\\{\\{(~)?>)/, /^(?:\\{\\{(~)?#>)/, /^(?:\\{\\{(~)?#\\*?)/, /^(?:\\{\\{(~)?\\/)/, /^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/, /^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/, /^(?:\\{\\{(~)?\\^)/, /^(?:\\{\\{(~)?\\s*else\\b)/, /^(?:\\{\\{(~)?\\{)/, /^(?:\\{\\{(~)?&)/, /^(?:\\{\\{(~)?!--)/, /^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/, /^(?:\\{\\{(~)?\\*?)/, /^(?:=)/, /^(?:\\.\\.)/, /^(?:\\.(?=([=~}\\s\\/.)\\]|])))/, /^(?:\\.#)/, /^(?:[\\/.])/, /^(?:\\s+)/, /^(?:\\}(~)?\\}\\})/, /^(?:(~)?\\}\\})/, /^(?:\"(\\\\[\"]|[^\"])*\")/, /^(?:'(\\\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\\s)\\]])))/, /^(?:false(?=([~}\\s)\\]])))/, /^(?:undefined(?=([~}\\s)\\]])))/, /^(?:null(?=([~}\\s)\\]])))/, /^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)\\]])))/, /^(?:as\\s+\\|)/, /^(?:\\|)/, /^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)\\]|]))))/, /^(?:\\[(\\\\\\]|[^\\]])*\\])/, /^(?:.)/, /^(?:$)/],\n conditions: { \"mu\": { \"rules\": [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47], \"inclusive\": false }, \"emu\": { \"rules\": [2], \"inclusive\": false }, \"com\": { \"rules\": [6], \"inclusive\": false }, \"raw\": { \"rules\": [3, 4, 5], \"inclusive\": false }, \"escl\": { \"rules\": [45], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 47], \"inclusive\": true } }\n });\n return lexer;\n })();\n parser.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser;\n parser.Parser = Parser;\n return new Parser;\n})();\nexport default parser;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3BhcnNlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQ0FBc0M7QUFDdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdUVFO0FBQ0YsSUFBSSxNQUFNLEdBQUcsQ0FBQztJQUNkLElBQUksQ0FBQyxHQUFDLFVBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxJQUFFLEtBQUksQ0FBQyxHQUFDLENBQUMsSUFBRSxFQUFFLEVBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUM7UUFBQyxDQUFDLENBQUEsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFDLEVBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxHQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxHQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsR0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEdBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEdBQUcsR0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztJQUN6MEIsSUFBSSxNQUFNLEdBQUcsRUFBQyxLQUFLLEVBQUUsU0FBUyxLQUFLLEtBQU0sQ0FBQztRQUMxQyxFQUFFLEVBQUUsRUFBRTtRQUNOLFFBQVEsRUFBRSxFQUFDLE9BQU8sRUFBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLENBQUMsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMscUJBQXFCLEVBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsVUFBVSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxFQUFDLFVBQVUsRUFBQyxFQUFFLEVBQUMsU0FBUyxFQUFDLEVBQUUsRUFBQyxjQUFjLEVBQUMsRUFBRSxFQUFDLFNBQVMsRUFBQyxFQUFFLEVBQUMsU0FBUyxFQUFDLEVBQUUsRUFBQyxTQUFTLEVBQUMsRUFBRSxFQUFDLGNBQWMsRUFBQyxFQUFFLEVBQUMsc0JBQXNCLEVBQUMsRUFBRSxFQUFDLGVBQWUsRUFBQyxFQUFFLEVBQUMsZ0JBQWdCLEVBQUMsRUFBRSxFQUFDLFlBQVksRUFBQyxFQUFFLEVBQUMsMEJBQTBCLEVBQUMsRUFBRSxFQUFDLHNCQUFz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QUFTLEVBQUMsRUFBRSxFQUFDLGVBQWUsRUFBQyxFQUFFLEVBQUMsTUFBTSxFQUFDLEVBQUUsRUFBQyxnQkFBZ0IsRUFBQyxFQUFFLEVBQUMsaUJBQWlCLEVBQUMsRUFBRSxFQUFDLGNBQWMsRUFBQyxFQUFFLEVBQUMsb0JBQW9CLEVBQUMsRUFBRSxFQUFDLFlBQVksRUFBQyxFQUFFLEVBQUMsYUFBYSxFQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLFFBQVEsRUFBQyxFQUFFLEVBQUMsWUFBWSxFQUFDLEVBQUUsRUFBQyxhQUFhLEVBQUMsRUFBRSxFQUFDLG1CQUFtQixFQUFDLEVBQUUsRUFBQyxvQkFBb0IsRUFBQyxFQUFFLEVBQUMsUUFBUSxFQUFDLEVBQUUsRUFBQyxRQUFRLEVBQUMsRUFBRSxFQUFDLFNBQVMsRUFBQyxFQUFFLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxNQUFNLEVBQUMsRUFBRSxFQUFDLE1BQU0sRUFBQyxFQUFFLEVBQUMsS0FBSyxFQUFDLEVBQUUsRUFBQyxhQUFhLEVBQUM7UUFDOWhCLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFD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QUcsSUFBSSxDQUFDO29CQUV2QixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO29CQUV0RSxNQUFNO2dCQUNOLEtBQUssRUFBRTtvQkFDUCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDO29CQUNsRSxNQUFNO2dCQUNOLEtBQUssRUFBRTtvQkFDUCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBQSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN0SyxNQUFNO2dCQUNOLEtBQUssRUFBRSxDQUFDO2dCQUFDLEtBQUssRUFBRTtvQkFDaEIsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxD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RUFBRSxDQUFDO2dCQUFDLEtBQUssR0FBRyxDQUFDO2dCQUFDLEtBQUssR0FBRztvQkFDNUcsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ1osTUFBTTtnQkFDTixLQUFLLEVBQUUsQ0FBQztnQkFBQyxLQUFLLEVBQUUsQ0FBQztnQkFBQyxLQUFLLEVBQUUsQ0FBQztnQkFBQyxLQUFLLEVBQUUsQ0FBQztnQkFBQyxLQUFLLEVBQUUsQ0FBQztnQkFBQyxLQUFLLEVBQUUsQ0FBQztnQkFBQyxLQUFLLEVBQUUsQ0FBQztnQkFBQyxLQUFLLEVBQUUsQ0FBQztnQkFBQyxLQUFLLEVBQUUsQ0FBQztnQkFBQyxLQUFLLEVBQUUsQ0FBQztnQkFBQyxLQUFLLEdBQUcsQ0FBQztnQkFBQyxLQUFLLEdBQUcsQ0FBQztnQkFBQyxLQUFLLEdBQUcsQ0FBQztnQkFBQyxLQUFLLEdBQUc7b0JBQ2hJLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUN0QixNQUFNO2dCQUNOLEtBQUssR0FBRyxDQUFDO2dCQUFDLEtBQUssR0FBRztvQkFDbEIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNsQixNQUFNO1lBQ04sQ0FBQztRQUNELENBQUM7UUFDRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLEdBQUcsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEVBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsR0FBRyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsR0FBRyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFtSyxjQUFjLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFD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LDJDQUEyQyxFQUFDLGNBQWMsRUFBQyxTQUFTLEVBQUMsMkRBQTJELEVBQUMsd0JBQXdCLEVBQUMsUUFBUSxFQUFDLFFBQVEsQ0FBQztZQUN2aUMsVUFBVSxFQUFFLEVBQUMsSUFBSSxFQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLEVBQUMsV0FBVyxFQUFDLEtBQUssRUFBQyxFQUFDLEtBQUssRUFBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxLQUFLLEVBQUMsRUFBQyxLQUFLLEVBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsS0FBSyxFQUFDLEVBQUMsS0FBSyxFQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsS0FBSyxFQUFDLEVBQUMsTUFBTSxFQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUMsV0FBVyxFQUFDLEtBQUssRUFBQyxFQUFDLFNBQVMsRUFBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsV0FBVyxFQUFDLElBQUksRUFBQyxFQUFDO1NBQ2hYLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNMLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLFNBQVMsTUFBTTtRQUNiLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUNELE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO0lBQUEsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDakQsT0FBTyxJQUFJLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUMsRUFBRSxDQUFDO0FBQUEsZUFBZSxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBwYXJzZXIgZ2VuZXJhdGVkIGJ5IGppc29uIDAuNC4xOCAqL1xuLypcbiAgUmV0dXJucyBhIFBhcnNlciBvYmplY3Qgb2YgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6XG5cbiAgUGFyc2VyOiB7XG4gICAgeXk6IHt9XG4gIH1cblxuICBQYXJzZXIucHJvdG90eXBlOiB7XG4gICAgeXk6IHt9LFxuICAgIHRyYWNlOiBmdW5jdGlvbigpLFxuICAgIHN5bWJvbHNfOiB7YXNzb2NpYXRpdmUgbGlzdDogbmFtZSA9PT4gbnVtYmVyfSxcbiAgICB0ZXJtaW5hbHNfOiB7YXNzb2NpYXRpdmUgbGlzdDogbnVtYmVyID09PiBuYW1lfSxcbiAgICBwcm9kdWN0aW9uc186IFsuLi5dLFxuICAgIHBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHl5LCB5eXN0YXRlLCAkJCwgXyQpLFxuICAgIHRhYmxlOiBbLi4uXSxcbiAgICBkZWZhdWx0QWN0aW9uczogey4uLn0sXG4gICAgcGFyc2VFcnJvcjogZnVuY3Rpb24oc3RyLCBoYXNoKSxcbiAgICBwYXJzZTogZnVuY3Rpb24oaW5wdXQpLFxuXG4gICAgbGV4ZXI6IHtcbiAgICAgICAgRU9GOiAxLFxuICAgICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbihzdHIsIGhhc2gpLFxuICAgICAgICBzZXRJbnB1dDogZnVuY3Rpb24oaW5wdXQpLFxuICAgICAgICBpbnB1dDogZnVuY3Rpb24oKSxcbiAgICAgICAgdW5wdXQ6IGZ1bmN0aW9uKHN0ciksXG4gICAgICAgIG1vcmU6IGZ1bmN0aW9uKCksXG4gICAgICAgIGxlc3M6IGZ1bmN0aW9uKG4pLFxuICAgICAgICBwYXN0SW5wdXQ6IGZ1bmN0aW9uKCksXG4gICAgICAgIHVwY29taW5nSW5wdXQ6IGZ1bmN0aW9uKCksXG4gICAgICAgIHNob3dQb3NpdGlvbjogZnVuY3Rpb24oKSxcbiAgICAgICAgdGVzdF9tYXRjaDogZnVuY3Rpb24ocmVnZXhfbWF0Y2hfYXJyYXksIHJ1bGVfaW5kZXgpLFxuICAgICAgICBuZXh0OiBmdW5jdGlvbigpLFxuICAgICAgICBsZXg6IGZ1bmN0aW9uKCksXG4gICAgICAgIGJlZ2luOiBmdW5jdGlvbihjb25kaXRpb24pLFxuICAgICAgICBwb3BTdGF0ZTogZnVuY3Rpb24oKSxcbiAgICAgICAgX2N1cnJlbnRSdWxlczogZnVuY3Rpb24oKSxcbiAgICAgICAgdG9wU3RhdGU6IGZ1bmN0aW9uKCksXG4gICAgICAgIHB1c2hTdGF0ZTogZnVuY3Rpb24oY29uZGl0aW9uKSxcblxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICByYW5nZXM6IGJvb2xlYW4gICAgICAgICAgIChvcHRpb25hbDogdHJ1ZSA9PT4gdG9rZW4gbG9jYXRpb24gaW5mbyB3aWxsIGluY2x1ZGUgYSAucmFuZ2VbXSBtZW1iZXIpXG4gICAgICAgICAgICBmbGV4OiBib29sZWFuICAgICAgICAgICAgIChvcHRpb25hbDogdHJ1ZSA9PT4gZmxleC1saWtlIGxleGluZyBiZWhhdmlvdXIgd2hlcmUgdGhlIHJ1bGVzIGFyZSB0ZXN0ZWQgZXhoYXVzdGl2ZWx5IHRvIGZpbmQgdGhlIGxvbmdlc3QgbWF0Y2gpXG4gICAgICAgICAgICBiYWNrdHJhY2tfbGV4ZXI6IGJvb2xlYW4gIChvcHRpb25hbDogdHJ1ZSA9PT4gbGV4ZXIgcmVnZXhlcyBhcmUgdGVzdGVkIGluIG9yZGVyIGFuZCBmb3IgZWFjaCBtYXRjaGluZyByZWdleCB0aGUgYWN0aW9uIGNvZGUgaXMgaW52b2tlZDsgdGhlIGxleGVyIHRlcm1pbmF0ZXMgdGhlIHNjYW4gd2hlbiBhIHRva2VuIGlzIHJldHVybmVkIGJ5IHRoZSBhY3Rpb24gY29kZSlcbiAgICAgICAgfSxcblxuICAgICAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbih5eSwgeXlfLCAkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLCBZWV9TVEFSVCksXG4gICAgICAgIHJ1bGVzOiBbLi4uXSxcbiAgICAgICAgY29uZGl0aW9uczoge2Fzc29jaWF0aXZlIGxpc3Q6IG5hbWUgPT0+IHNldH0sXG4gICAgfVxuICB9XG5cblxuICB0b2tlbiBsb2NhdGlvbiBpbmZvIChAJCwgXyQsIGV0Yy4pOiB7XG4gICAgZmlyc3RfbGluZTogbixcbiAgICBsYXN0X2xpbmU6IG4sXG4gICAgZmlyc3RfY29sdW1uOiBuLFxuICAgIGxhc3RfY29sdW1uOiBuLFxuICAgIHJhbmdlOiBbc3RhcnRfbnVtYmVyLCBlbmRfbnVtYmVyXSAgICAgICAod2hlcmUgdGhlIG51bWJlcnMgYXJlIGluZGV4ZXMgaW50byB0aGUgaW5wdXQgc3RyaW5nLCByZWd1bGFyIHplcm8tYmFzZWQpXG4gIH1cblxuXG4gIHRoZSBwYXJzZUVycm9yIGZ1bmN0aW9uIHJlY2VpdmVzIGEgJ2hhc2gnIG9iamVjdCB3aXRoIHRoZXNlIG1lbWJlcnMgZm9yIGxleGVyIGFuZCBwYXJzZXIgZXJyb3JzOiB7XG4gICAgdGV4dDogICAgICAgIChtYXRjaGVkIHRleHQpXG4gICAgdG9rZW46ICAgICAgICh0aGUgcHJvZHVjZWQgdGVybWluYWwgdG9rZW4sIGlmIGFueSlcbiAgICBsaW5lOiAgICAgICAgKHl5bGluZW5vKVxuICB9XG4gIHdoaWxlIHBhcnNlciAoZ3JhbW1hcikgZXJyb3JzIHdpbGwgYWxzbyBwcm92aWRlIHRoZXNlIG1lbWJlcnMsIGkuZS4gcGFyc2VyIGVycm9ycyBkZWxpdmVyIGEgc3VwZXJzZXQgb2YgYXR0cmlidXRlczoge1xuICAgIGxvYzogICAgICAgICAoeXlsbG9jKVxuICAgIGV4cGVjdGVkOiAgICAoc3RyaW5nIGRlc2NyaWJpbmcgdGhlIHNldCBvZiBleHBlY3RlZCB0b2tlbnMpXG4gICAgcmVjb3ZlcmFibGU6IChib29sZWFuOiBUUlVFIHdoZW4gdGhlIHBhcnNlciBoYXMgYSBlcnJvciByZWNvdmVyeSBydWxlIGF2YWlsYWJsZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIGVycm9yKVxuICB9XG4qL1xudmFyIHBhcnNlciA9IChmdW5jdGlvbigpe1xudmFyIG89ZnVuY3Rpb24oayx2LG8sbCl7Zm9yKG89b3x8e30sbD1rLmxlbmd0aDtsLS07b1trW2xdXT12KTtyZXR1cm4gb30sJFYwPVsyLDUyXSwkVjE9WzEsMjBdLCRWMj1bNSwxNCwxNSwxOSwyOSwzNCwzOSw0NCw0Nyw0OCw1Myw1Nyw2MV0sJFYzPVsxLDQ0XSwkVjQ9WzEsNDBdLCRWNT1bMSw0M10sJFY2PVsxLDMzXSwkVjc9WzEsMzRdLCRWOD1bMSwzNV0sJFY5PVsxLDM2XSwkVmE9WzEsMzddLCRWYj1bMSw0Ml0sJFZjPVsxLDQ2XSwkVmQ9WzE0LDE1LDE5LDI5LDM0LDM5LDQ0LDQ3LDQ4LDUzLDU3LDYxXSwkVmU9WzE0LDE1LDE5LDI5LDM0LDQ0LDQ3LDQ4LDUzLDU3LDYxXSwkVmY9WzE1LDE4XSwkVmc9WzE0LDE1LDE5LDI5LDM0LDQ3LDQ4LDUzLDU3LDYxXSwkVmg9WzMzLDY3LDczLDc1LDg0LDg1LDg2LDg3LDg4LDg5XSwkVmk9WzIzLDMzLDU2LDY3LDY4LDczLDc1LDc3LDc5LDg0LDg1LDg2LDg3LDg4LDg5XSwkVmo9WzEsNjJdLCRWaz1bMSw2M10sJFZsPVsyMywzMyw1Niw2OCw3Myw3OV0sJFZtPVsyMywzMyw1Niw2Nyw2OCw3Myw3NSw3Nyw3OSw4NCw4NSw4Niw4Nyw4OCw4OSw5Miw5M10sJFZuPVsyLDUxXSwkVm89WzEsNjRdLCRWcD1bNjcsNzMsNzUsNzcsODQsODUsODYsODcsODgsODldLCRWcT1bNTYsNjcsNzMsNzUsODQsODUsODYsODcsODgsODldLCRWcj1bMSw3NV0sJFZzPVsxLDc2XSwkVnQ9WzEsODNdLCRWdT1bMzMsNjcsNzMsNzUsNzksODQsODUsODYsODcsODgsODldLCRWdj1bMjMsNjcsNzMsNzUsODQsODUsODYsODcsODgsODldLCRWdz1bNjcsNjgsNzMsNzUsODQsODUsODYsODcsODgsODldLCRWeD1bMzMsNzldLCRWeT1bMSwxMzRdLCRWej1bNzMsODFdO1xudmFyIHBhcnNlciA9IHt0cmFjZTogZnVuY3Rpb24gdHJhY2UgKCkgeyB9LFxueXk6IHt9LFxuc3ltYm9sc186IHtcImVycm9yXCI6MixcInJvb3RcIjozLFwicHJvZ3JhbVwiOjQsXCJFT0ZcIjo1LFwicHJvZ3JhbV9yZXBldGl0aW9uMFwiOjYsXCJzdGF0ZW1lbnRcIjo3LFwibXVzdGFjaGVcIjo4LFwiYmxvY2tcIjo5LFwicmF3QmxvY2tcIjoxMCxcInBhcnRpYWxcIjoxMSxcInBhcnRpYWxCbG9ja1wiOjEyLFwiY29udGVudFwiOjEzLFwiQ09NTUVOVFwiOjE0LFwiQ09OVEVOVFwiOjE1LFwib3BlblJhd0Jsb2NrXCI6MTYsXCJyYXdCbG9ja19yZXBldGl0aW9uMFwiOjE3LFwiRU5EX1JBV19CTE9DS1wiOjE4LFwiT1BFTl9SQVdfQkxPQ0tcIjoxOSxcImhlbHBlck5hbWVcIjoyMCxcIm9wZW5SYXdCbG9ja19yZXBldGl0aW9uMFwiOjIxLFwib3BlblJhd0Jsb2NrX29wdGlvbjBcIjoyMixcIkNMT1NFX1JBV19CTE9DS1wiOjIzLFwib3BlbkJsb2NrXCI6MjQsXCJibG9ja19vcHRpb24wXCI6MjUsXCJjbG9zZUJsb2NrXCI6MjYsXCJvcGVuSW52ZXJzZVwiOjI3LFwiYmxvY2tfb3B0aW9uMVwiOjI4LFwiT1BFTl9CTE9DS1wiOjI5LFwib3BlbkJsb2NrX3JlcGV0aXRpb24wXCI6MzAsXCJvcGVuQmxvY2tfb3B0aW9uMFwiOjMxLFwib3BlbkJsb2NrX29wdGlvbjFcIjozMixcIkNMT1NFXCI6MzMsXCJPUEVOX0lOVkVSU0VcIjozNCxcIm9wZW5JbnZlcnNlX3JlcGV0aXRpb24wXCI6MzUsXCJvcGVuSW52ZXJzZV9vcHRpb24wXCI6MzYsXCJvcGVuSW52ZXJzZV9vcHRpb24xXCI6MzcsXCJvcGVuSW52ZXJzZUNoYWluXCI6MzgsXCJPUEVOX0lOVkVSU0VfQ0hBSU5cIjozOSxcIm9wZW5JbnZlcnNlQ2hhaW5fcmVwZXRpdGlvbjBcIjo0MCxcIm9wZW5JbnZlcnNlQ2hhaW5fb3B0aW9uMFwiOjQxLFwib3BlbkludmVyc2VDaGFpbl9vcHRpb24xXCI6NDIsXCJpbnZlcnNlQW5kUHJvZ3JhbVwiOjQzLFwiSU5WRVJTRVwiOjQ0LFwiaW52ZXJzZUNoYWluXCI6NDUsXCJpbnZlcnNlQ2hhaW5fb3B0aW9uMFwiOjQ2LFwiT1BFTl9FTkRCTE9DS1wiOjQ3LFwiT1BFTlwiOjQ4LFwiaGFzaFwiOjQ5LFwiZXhwclwiOjUwLFwibXVzdGFjaGVfcmVwZXRpdGlvbjBcIjo1MSxcIm11c3RhY2hlX29wdGlvbjBcIjo1MixcIk9QRU5fVU5FU0NBUEVEXCI6NTMsXCJtdXN0YWNoZV9yZXBldGl0aW9uMVwiOjU0LFwibXVzdGFjaGVfb3B0aW9uMVwiOjU1LFwiQ0xPU0VfVU5FU0NBUEVEXCI6NTYsXCJPUEVOX1BBUlRJQUxcIjo1NyxcInBhcnRpYWxfcmVwZXRpdGlvbjBcIjo1OCxcInBhcnRpYWxfb3B0aW9uMFwiOjU5LFwib3BlblBhcnRpYWxCbG9ja1wiOjYwLFwiT1BFTl9QQVJUSUFMX0JMT0NLXCI6NjEsXCJvcGVuUGFydGlhbEJsb2NrX3JlcGV0aXRpb24wXCI6NjIsXCJvcGVuUGFydGlhbEJsb2NrX29wdGlvbjBcIjo2MyxcImV4cHJIZWFkXCI6NjQsXCJhcnJheUxpdGVyYWxcIjo2NSxcInNleHByXCI6NjYsXCJPUEVOX1NFWFBSXCI6NjcsXCJDTE9TRV9TRVhQUlwiOjY4LFwic2V4cHJfcmVwZXRpdGlvbjBcIjo2OSxcInNleHByX29wdGlvbjBcIjo3MCxcImhhc2hfcmVwZXRpdGlvbl9wbHVzMFwiOjcxLFwiaGFzaFNlZ21lbnRcIjo3MixcIklEXCI6NzMsXCJFUVVBTFNcIjo3NCxcIk9QRU5fQVJSQVlcIjo3NSxcImFycmF5TGl0ZXJhbF9yZXBldGl0aW9uMFwiOjc2LFwiQ0xPU0VfQVJSQVlcIjo3NyxcImJsb2NrUGFyYW1zXCI6NzgsXCJPUEVOX0JMT0NLX1BBUkFNU1wiOjc5LFwiYmxvY2tQYXJhbXNfcmVwZXRpdGlvbl9wbHVzMFwiOjgwLFwiQ0xPU0VfQkxPQ0tfUEFSQU1TXCI6ODEsXCJwYXRoXCI6ODIsXCJkYXRhTmFtZVwiOjgzLFwiU1RSSU5HXCI6ODQsXCJOVU1CRVJcIjo4NSxcIkJPT0xFQU5cIjo4NixcIlVOREVGSU5FRFwiOjg3LFwiTlVMTFwiOjg4LFwiREFUQVwiOjg5LFwicGF0aFNlZ21lbnRzXCI6OTAsXCJzZXBcIjo5MSxcIlNFUFwiOjkyLFwiUFJJVkFURV9TRVBcIjo5MyxcIiRhY2NlcHRcIjowLFwiJGVuZFwiOjF9LFxudGVybWluYWxzXzogezI6XCJlcnJvclwiLDU6XCJFT0ZcIiwxNDpcIkNPTU1FTlRcIiwxNTpcIkNPTlRFTlRcIiwxODpcIkVORF9SQVdfQkxPQ0tcIiwxOTpcIk9QRU5fUkFXX0JMT0NLXCIsMjM6XCJDTE9TRV9SQVdfQkxPQ0tcIiwyOTpcIk9QRU5fQkxPQ0tcIiwzMzpcIkNMT1NFXCIsMzQ6XCJPUEVOX0lOVkVSU0VcIiwzOTpcIk9QRU5fSU5WRVJTRV9DSEFJTlwiLDQ0OlwiSU5WRVJTRVwiLDQ3OlwiT1BFTl9FTkRCTE9DS1wiLDQ4OlwiT1BFTlwiLDUzOlwiT1BFTl9VTkVTQ0FQRURcIiw1NjpcIkNMT1NFX1VORVNDQVBFRFwiLDU3OlwiT1BFTl9QQVJUSUFMXCIsNjE6XCJPUEVOX1BBUlRJQUxfQkxPQ0tcIiw2NzpcIk9QRU5fU0VYUFJcIiw2ODpcIkNMT1NFX1NFWFBSXCIsNzM6XCJJRFwiLDc0OlwiRVFVQUxTXCIsNzU6XCJPUEVOX0FSUkFZXCIsNzc6XCJDTE9TRV9BUlJBWVwiLDc5OlwiT1BFTl9CTE9DS19QQVJBTVNcIiw4MTpcIkNMT1NFX0JMT0NLX1BBUkFNU1wiLDg0OlwiU1RSSU5HXCIsODU6XCJOVU1CRVJcIiw4NjpcIkJPT0xFQU5cIiw4NzpcIlVOREVGSU5FRFwiLDg4OlwiTlVMTFwiLDg5OlwiREFUQVwiLDkyOlwiU0VQXCIsOTM6XCJQUklWQVRFX1NFUFwifSxcbnByb2R1Y3Rpb25zXzogWzAsWzMsMl0sWzQsMV0sWzcsMV0sWzcsMV0sWzcsMV0sWzcsMV0sWzcsMV0sWzcsMV0sWzcsMV0sWzEzLDFdLFsxMCwzXSxbMTYsNV0sWzksNF0sWzksNF0sWzI0LDZdLFsyNyw2XSxbMzgsNl0sWzQzLDJdLFs0NSwzXSxbNDUsMV0sWzI2LDNdLFs4LDNdLFs4LDVdLFs4LDVdLFsxMSw1XSxbMTIsM10sWzYwLDVdLFs1MCwxXSxbNTAsMV0sWzY0LDFdLFs2NCwxXSxbNjYsM10sWzY2LDVdLFs0OSwxXSxbNzIsM10sWzY1LDNdLFs3OCwzXSxbMjAsMV0sWzIwLDFdLFsyMCwxXSxbMjAsMV0sWzIwLDFdLFsyMCwxXSxbMjAsMV0sWzgzLDJdLFs5MSwxXSxbOTEsMV0sWzgyLDNdLFs4MiwxXSxbOTAsM10sWzkwLDFdLFs2LDBdLFs2LDJdLFsxNywwXSxbMTcsMl0sWzIxLDBdLFsyMSwyXSxbMjIsMF0sWzIyLDFdLFsyNSwwXSxbMjUsMV0sWzI4LDBdLFsyOCwxXSxbMzAsMF0sWzMwLDJdLFszMSwwXSxbMzEsMV0sWzMyLDBdLFszMiwxXSxbMzUsMF0sWzM1LDJdLFszNiwwXSxbMzYsMV0sWzM3LDBdLFszNywxXSxbNDAsMF0sWzQwLDJdLFs0MSwwXSxbNDEsMV0sWzQyLDBdLFs0MiwxXSxbNDYsMF0sWzQ2LDFdLFs1MSwwXSxbNTEsMl0sWzUyLDBdLFs1MiwxXSxbNTQsMF0sWzU0LDJdLFs1NSwwXSxbNTUsMV0sWzU4LDBdLFs1OCwyXSxbNTksMF0sWzU5LDFdLFs2MiwwXSxbNjIsMl0sWzYzLDBdLFs2MywxXSxbNjksMF0sWzY5LDJdLFs3MCwwXSxbNzAsMV0sWzcxLDFdLFs3MSwyXSxbNzYsMF0sWzc2LDJdLFs4MCwxXSxbODAsMl1dLFxucGVyZm9ybUFjdGlvbjogZnVuY3Rpb24gYW5vbnltb3VzKHl5dGV4dCwgeXlsZW5nLCB5eWxpbmVubywgeXksIHl5c3RhdGUgLyogYWN0aW9uWzFdICovLCAkJCAvKiB2c3RhY2sgKi8sIF8kIC8qIGxzdGFjayAqLykge1xuLyogdGhpcyA9PSB5eXZhbCAqL1xuXG52YXIgJDAgPSAkJC5sZW5ndGggLSAxO1xuc3dpdGNoICh5eXN0YXRlKSB7XG5jYXNlIDE6XG4gcmV0dXJuICQkWyQwLTFdOyBcbmJyZWFrO1xuY2FzZSAyOlxudGhpcy4kID0geXkucHJlcGFyZVByb2dyYW0oJCRbJDBdKTtcbmJyZWFrO1xuY2FzZSAzOiBjYXNlIDQ6IGNhc2UgNTogY2FzZSA2OiBjYXNlIDc6IGNhc2UgODogY2FzZSAyMDogY2FzZSAyODogY2FzZSAyOTogY2FzZSAzMDogY2FzZSAzMTogY2FzZSAzODogY2FzZSAzOTogY2FzZSA0NjogY2FzZSA0NzpcbnRoaXMuJCA9ICQkWyQwXTtcbmJyZWFrO1xuY2FzZSA5OlxuXG4gICAgdGhpcy4kID0ge1xuICAgICAgdHlwZTogJ0NvbW1lbnRTdGF0ZW1lbnQnLFxuICAgICAgdmFsdWU6IHl5LnN0cmlwQ29tbWVudCgkJFskMF0pLFxuICAgICAgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDBdLCAkJFskMF0pLFxuICAgICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpXG4gICAgfTtcbiAgXG5icmVhaztcbmNhc2UgMTA6XG5cbiAgICB0aGlzLiQgPSB7XG4gICAgICB0eXBlOiAnQ29udGVudFN0YXRlbWVudCcsXG4gICAgICBvcmlnaW5hbDogJCRbJDBdLFxuICAgICAgdmFsdWU6ICQkWyQwXSxcbiAgICAgIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKVxuICAgIH07XG4gIFxuYnJlYWs7XG5jYXNlIDExOlxudGhpcy4kID0geXkucHJlcGFyZVJhd0Jsb2NrKCQkWyQwLTJdLCAkJFskMC0xXSwgJCRbJDBdLCB0aGlzLl8kKTtcbmJyZWFrO1xuY2FzZSAxMjpcbnRoaXMuJCA9IHsgcGF0aDogJCRbJDAtM10sIHBhcmFtczogJCRbJDAtMl0sIGhhc2g6ICQkWyQwLTFdIH07XG5icmVhaztcbmNhc2UgMTM6XG50aGlzLiQgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAtM10sICQkWyQwLTJdLCAkJFskMC0xXSwgJCRbJDBdLCBmYWxzZSwgdGhpcy5fJCk7XG5icmVhaztcbmNhc2UgMTQ6XG50aGlzLiQgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAtM10sICQkWyQwLTJdLCAkJFskMC0xXSwgJCRbJDBdLCB0cnVlLCB0aGlzLl8kKTtcbmJyZWFrO1xuY2FzZSAxNTpcbnRoaXMuJCA9IHsgb3BlbjogJCRbJDAtNV0sIHBhdGg6ICQkWyQwLTRdLCBwYXJhbXM6ICQkWyQwLTNdLCBoYXNoOiAkJFskMC0yXSwgYmxvY2tQYXJhbXM6ICQkWyQwLTFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMC01XSwgJCRbJDBdKSB9O1xuYnJlYWs7XG5jYXNlIDE2OiBjYXNlIDE3OlxudGhpcy4kID0geyBwYXRoOiAkJFskMC00XSwgcGFyYW1zOiAkJFskMC0zXSwgaGFzaDogJCRbJDAtMl0sIGJsb2NrUGFyYW1zOiAkJFskMC0xXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAtNV0sICQkWyQwXSkgfTtcbmJyZWFrO1xuY2FzZSAxODpcbnRoaXMuJCA9IHsgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAtMV0sICQkWyQwLTFdKSwgcHJvZ3JhbTogJCRbJDBdIH07XG5icmVhaztcbmNhc2UgMTk6XG5cbiAgICB2YXIgaW52ZXJzZSA9IHl5LnByZXBhcmVCbG9jaygkJFskMC0yXSwgJCRbJDAtMV0sICQkWyQwXSwgJCRbJDBdLCBmYWxzZSwgdGhpcy5fJCksXG4gICAgICAgIHByb2dyYW0gPSB5eS5wcmVwYXJlUHJvZ3JhbShbaW52ZXJzZV0sICQkWyQwLTFdLmxvYyk7XG4gICAgcHJvZ3JhbS5jaGFpbmVkID0gdHJ1ZTtcblxuICAgIHRoaXMuJCA9IHsgc3RyaXA6ICQkWyQwLTJdLnN0cmlwLCBwcm9ncmFtOiBwcm9ncmFtLCBjaGFpbjogdHJ1ZSB9O1xuICBcbmJyZWFrO1xuY2FzZSAyMTpcbnRoaXMuJCA9IHtwYXRoOiAkJFskMC0xXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAtMl0sICQkWyQwXSl9O1xuYnJlYWs7XG5jYXNlIDIyOlxudGhpcy4kID0geXkucHJlcGFyZU11c3RhY2hlKHl5LnN5bnRheC5oYXNoKCQkWyQwLTFdLCB5eS5sb2NJbmZvKHRoaXMuXyQpLCB7IHl5LCBzeW50YXg6ICdleHByJyB9KSwgW10sIHVuZGVmaW5lZCwgJCRbJDAtMl0sIHl5LnN0cmlwRmxhZ3MoJCRbJDAtMl0sICQkWyQwXSksIHRoaXMuXyQpO1xuYnJlYWs7XG5jYXNlIDIzOiBjYXNlIDI0OlxudGhpcy4kID0geXkucHJlcGFyZU11c3RhY2hlKCQkWyQwLTNdLCAkJFskMC0yXSwgJCRbJDAtMV0sICQkWyQwLTRdLCB5eS5zdHJpcEZsYWdzKCQkWyQwLTRdLCAkJFskMF0pLCB0aGlzLl8kKTtcbmJyZWFrO1xuY2FzZSAyNTpcblxuICAgIHRoaXMuJCA9IHtcbiAgICAgIHR5cGU6ICdQYXJ0aWFsU3RhdGVtZW50JyxcbiAgICAgIG5hbWU6ICQkWyQwLTNdLFxuICAgICAgcGFyYW1zOiAkJFskMC0yXSxcbiAgICAgIGhhc2g6ICQkWyQwLTFdLFxuICAgICAgaW5kZW50OiAnJyxcbiAgICAgIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwLTRdLCAkJFskMF0pLFxuICAgICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpXG4gICAgfTtcbiAgXG5icmVhaztcbmNhc2UgMjY6XG50aGlzLiQgPSB5eS5wcmVwYXJlUGFydGlhbEJsb2NrKCQkWyQwLTJdLCAkJFskMC0xXSwgJCRbJDBdLCB0aGlzLl8kKTtcbmJyZWFrO1xuY2FzZSAyNzpcbnRoaXMuJCA9IHsgcGF0aDogJCRbJDAtM10sIHBhcmFtczogJCRbJDAtMl0sIGhhc2g6ICQkWyQwLTFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMC00XSwgJCRbJDBdKSB9O1xuYnJlYWs7XG5jYXNlIDMyOlxudGhpcy4kID0geXkuc3ludGF4Lmhhc2goJCRbJDAtMV0sIHl5LmxvY0luZm8odGhpcy5fJCksIHsgeXksIHN5bnRheDogJ2V4cHInIH0pO1xuYnJlYWs7XG5jYXNlIDMzOlxuXG4gICAgdGhpcy4kID0ge1xuICAgICAgdHlwZTogJ1N1YkV4cHJlc3Npb24nLFxuICAgICAgcGF0aDogJCRbJDAtM10sXG4gICAgICBwYXJhbXM6ICQkWyQwLTJdLFxuICAgICAgaGFzaDogJCRbJDAtMV0sXG4gICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJClcbiAgICB9O1xuICBcbmJyZWFrO1xuY2FzZSAzNDpcbnRoaXMuJCA9IHt0eXBlOiAnSGFzaCcsIHBhaXJzOiAkJFskMF0sIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKX07XG5icmVhaztcbmNhc2UgMzU6XG50aGlzLiQgPSB7dHlwZTogJ0hhc2hQYWlyJywga2V5OiB5eS5pZCgkJFskMC0yXSksIHZhbHVlOiAkJFskMF0sIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKX07XG5icmVhaztcbmNhc2UgMzY6XG50aGlzLiQgPSB5eS5zeW50YXguc3F1YXJlKCQkWyQwLTFdLCB5eS5sb2NJbmZvKHRoaXMuXyQpLCB7IHl5LCBzeW50YXg6ICdleHByJyB9KTtcbmJyZWFrO1xuY2FzZSAzNzpcbnRoaXMuJCA9IHl5LmlkKCQkWyQwLTFdKTtcbmJyZWFrO1xuY2FzZSA0MDpcbnRoaXMuJCA9IHt0eXBlOiAnU3RyaW5nTGl0ZXJhbCcsIHZhbHVlOiAkJFskMF0sIG9yaWdpbmFsOiAkJFskMF0sIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKX07XG5icmVhaztcbmNhc2UgNDE6XG50aGlzLiQgPSB7dHlwZTogJ051bWJlckxpdGVyYWwnLCB2YWx1ZTogTnVtYmVyKCQkWyQwXSksIG9yaWdpbmFsOiBOdW1iZXIoJCRbJDBdKSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpfTtcbmJyZWFrO1xuY2FzZSA0MjpcbnRoaXMuJCA9IHt0eXBlOiAnQm9vbGVhbkxpdGVyYWwnLCB2YWx1ZTogJCRbJDBdID09PSAndHJ1ZScsIG9yaWdpbmFsOiAkJFskMF0gPT09ICd0cnVlJywgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpfTtcbmJyZWFrO1xuY2FzZSA0MzpcbnRoaXMuJCA9IHt0eXBlOiAnVW5kZWZpbmVkTGl0ZXJhbCcsIG9yaWdpbmFsOiB1bmRlZmluZWQsIHZhbHVlOiB1bmRlZmluZWQsIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKX07XG5icmVhaztcbmNhc2UgNDQ6XG50aGlzLiQgPSB7dHlwZTogJ051bGxMaXRlcmFsJywgb3JpZ2luYWw6IG51bGwsIHZhbHVlOiBudWxsLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCl9O1xuYnJlYWs7XG5jYXNlIDQ1OlxudGhpcy4kID0geXkucHJlcGFyZVBhdGgodHJ1ZSwgZmFsc2UsICQkWyQwXSwgdGhpcy5fJCk7XG5icmVhaztcbmNhc2UgNDg6XG50aGlzLiQgPSB5eS5wcmVwYXJlUGF0aChmYWxzZSwgJCRbJDAtMl0sICQkWyQwXSwgdGhpcy5fJCk7XG5icmVhaztcbmNhc2UgNDk6XG50aGlzLiQgPSB5eS5wcmVwYXJlUGF0aChmYWxzZSwgZmFsc2UsICQkWyQwXSwgdGhpcy5fJCk7XG5icmVhaztcbmNhc2UgNTA6XG4gJCRbJDAtMl0ucHVzaCh7cGFydDogeXkuaWQoJCRbJDBdKSwgb3JpZ2luYWw6ICQkWyQwXSwgc2VwYXJhdG9yOiAkJFskMC0xXX0pOyB0aGlzLiQgPSAkJFskMC0yXTsgXG5icmVhaztcbmNhc2UgNTE6XG50aGlzLiQgPSBbe3BhcnQ6IHl5LmlkKCQkWyQwXSksIG9yaWdpbmFsOiAkJFskMF19XTtcbmJyZWFrO1xuY2FzZSA1MjogY2FzZSA1NDogY2FzZSA1NjogY2FzZSA2NDogY2FzZSA3MDogY2FzZSA3NjogY2FzZSA4NDogY2FzZSA4ODogY2FzZSA5MjogY2FzZSA5NjogY2FzZSAxMDA6IGNhc2UgMTA2OlxudGhpcy4kID0gW107XG5icmVhaztcbmNhc2UgNTM6IGNhc2UgNTU6IGNhc2UgNTc6IGNhc2UgNjU6IGNhc2UgNzE6IGNhc2UgNzc6IGNhc2UgODU6IGNhc2UgODk6IGNhc2UgOTM6IGNhc2UgOTc6IGNhc2UgMTAxOiBjYXNlIDEwNTogY2FzZSAxMDc6IGNhc2UgMTA5OlxuJCRbJDAtMV0ucHVzaCgkJFskMF0pO1xuYnJlYWs7XG5jYXNlIDEwNDogY2FzZSAxMDg6XG50aGlzLiQgPSBbJCRbJDBdXTtcbmJyZWFrO1xufVxufSxcbnRhYmxlOiBbbyhbNSwxNCwxNSwxOSwyOSwzNCw0OCw1Myw1Nyw2MV0sJFYwLHszOjEsNDoyLDY6M30pLHsxOlszXX0sezU6WzEsNF19LG8oWzUsMzksNDQsNDddLFsyLDJdLHs3OjUsODo2LDk6NywxMDo4LDExOjksMTI6MTAsMTM6MTEsMjQ6MTUsMjc6MTYsMTY6MTcsNjA6MTksMTQ6WzEsMTJdLDE1OiRWMSwxOTpbMSwyM10sMjk6WzEsMjFdLDM0OlsxLDIyXSw0ODpbMSwxM10sNTM6WzEsMTRdLDU3OlsxLDE4XSw2MTpbMSwyNF19KSx7MTpbMiwxXX0sbygkVjIsWzIsNTNdKSxvKCRWMixbMiwzXSksbygkVjIsWzIsNF0pLG8oJFYyLFsyLDVdKSxvKCRWMixbMiw2XSksbygkVjIsWzIsN10pLG8oJFYyLFsyLDhdKSxvKCRWMixbMiw5XSksezIwOjI4LDQ5OjI1LDUwOjI2LDY0OjI5LDY1OjM4LDY2OjM5LDY3OiRWMyw3MToyNyw3MjozMCw3MzokVjQsNzU6JFY1LDgyOjMxLDgzOjMyLDg0OiRWNiw4NTokVjcsODY6JFY4LDg3OiRWOSw4ODokVmEsODk6JFZiLDkwOjQxfSx7MjA6MjgsNTA6NDUsNjQ6MjksNjU6MzgsNjY6MzksNjc6JFYzLDczOiRWYyw3NTokVjUsODI6MzEsODM6MzIsODQ6JFY2LDg1OiRWNyw4NjokVjgsODc6JFY5LDg4OiRWYSw4OTokVmIsOTA6NDF9LG8oJFZkLCRWMCx7NjozLDQ6NDd9KSxvKCRWZSwkVjAsezY6Myw0OjQ4fSksbygkVmYsWzIsNTRdLHsxNzo0OX0pLHsyMDoyOCw1MDo1MCw2NDoyOSw2NTozOCw2NjozOSw2NzokVjMsNzM6JFZjLDc1OiRWNSw4MjozMSw4MzozMiw4NDokVjYsODU6JFY3LDg2OiRWOCw4NzokVjksODg6JFZhLDg5OiRWYiw5MDo0MX0sbygkVmcsJFYwLHs2OjMsNDo1MX0pLG8oWzUsMTQsMTUsMTgsMTksMjksMzQsMzksNDQsNDcsNDgsNTMsNTcsNjFdLFsyLDEwXSksezIwOjUyLDY0OjUzLDY1OjM4LDY2OjM5LDY3OiRWMyw3MzokVmMsNzU6JFY1LDgyOjMxLDgzOjMyLDg0OiRWNiw4NTokVjcsODY6JFY4LDg3OiRWOSw4ODokVmEsODk6JFZiLDkwOjQxfSx7MjA6NTQsNjQ6NTMsNjU6MzgsNjY6MzksNjc6JFYzLDczOiRWYyw3NTokVjUsODI6MzEsODM6MzIsODQ6JFY2LDg1OiRWNyw4NjokVjgsODc6JFY5LDg4OiRWYSw4OTokVmIsOTA6NDF9LHsyMDo1NSw2NDo1Myw2NTozOCw2NjozOSw2NzokVjMsNzM6JFZjLDc1OiRWNSw4MjozMSw4MzozMiw4NDokVjYsODU6JFY3LDg2OiRWOCw4NzokVjksODg6JFZhLDg5OiRWYiw5MDo0MX0sezIwOjI4LDUwOjU2LDY0OjI5LDY1OjM4LDY2OjM5LDY3OiRWMyw3MzokVmMsNzU6JFY1LDgyOjMxLDgzOjMyLDg0OiRWNiw4NTokVjcsODY6JFY4LDg3OiRWOSw4ODokVmEsODk6JFZiLDkwOjQxfSx7MzM6WzEsNTddfSxvKCRWaCxbMiw4NF0sezUxOjU4fSksbyhbMjMsMzMsNTYsNjgsNzldLFsyLDM0XSx7NzI6NTksNzM6WzEsNjBdfSksbygkVmksWzIsMjhdKSxvKCRWaSxbMiwyOV0sezkxOjYxLDkyOiRWaiw5MzokVmt9KSxvKCRWbCxbMiwxMDRdKSxvKCRWaSxbMiwzOF0pLG8oJFZpLFsyLDM5XSksbygkVmksWzIsNDBdKSxvKCRWaSxbMiw0MV0pLG8oJFZpLFsyLDQyXSksbygkVmksWzIsNDNdKSxvKCRWaSxbMiw0NF0pLG8oJFZtLFsyLDMwXSksbygkVm0sWzIsMzFdKSxvKFsyMywzMyw1Niw2Nyw2OCw3Myw3NSw3OSw4NCw4NSw4Niw4Nyw4OCw4OSw5Miw5M10sJFZuLHs3NDokVm99KSxvKCRWaSxbMiw0OV0sezkxOjY1LDkyOiRWaiw5MzokVmt9KSx7NzM6JFZjLDkwOjY2fSxvKCRWcCxbMiwxMDZdLHs3Njo2N30pLHsyMDoyOCw0OTo2OCw1MDo2OSw2NDoyOSw2NTozOCw2NjozOSw2NzokVjMsNzE6MjcsNzI6MzAsNzM6JFY0LDc1OiRWNSw4MjozMSw4MzozMiw4NDokVjYsODU6JFY3LDg2OiRWOCw4NzokVjksODg6JFZhLDg5OiRWYiw5MDo0MX0sbygkVnEsWzIsODhdLHs1NDo3MH0pLG8oJFZtLCRWbiksezI1OjcxLDM4OjczLDM5OiRWciw0Mzo3NCw0NDokVnMsNDU6NzIsNDc6WzIsNjBdfSx7Mjg6NzcsNDM6NzgsNDQ6JFZzLDQ3OlsyLDYyXX0sezEzOjgwLDE1OiRWMSwxODpbMSw3OV19LG8oJFZoLFsyLDkyXSx7NTg6ODF9KSx7MjY6ODIsNDc6JFZ0fSxvKCRWdSxbMiw2NF0sezMwOjg0fSksezkxOjYxLDkyOiRWaiw5MzokVmt9LG8oJFZ1LFsyLDcwXSx7MzU6ODV9KSxvKCRWdixbMiw1Nl0sezIxOjg2fSksbygkVmgsWzIsOTZdLHs2Mjo4N30pLG8oJFYyLFsyLDIyXSksezIwOjI4LDMzOlsyLDg2XSw0OTo5MCw1MDo4OSw1Mjo4OCw2NDoyOSw2NTozOCw2NjozOSw2NzokVjMsNzE6MjcsNzI6MzAsNzM6JFY0LDc1OiRWNSw4MjozMSw4MzozMiw4NDokVjYsODU6JFY3LDg2OiRWOCw4NzokVjksODg6JFZhLDg5OiRWYiw5MDo0MX0sbygkVmwsWzIsMTA1XSksezc0OiRWb30sezczOiRWYyw5MDo5MX0sezczOlsyLDQ2XX0sezczOlsyLDQ3XX0sezIwOjI4LDUwOjkyLDY0OjI5LDY1OjM4LDY2OjM5LDY3OiRWMyw3MzokVmMsNzU6JFY1LDgyOjMxLDgzOjMyLDg0OiRWNiw4NTokVjcsODY6JFY4LDg3OiRWOSw4ODokVmEsODk6JFZiLDkwOjQxfSx7NzM6WzEsOTNdfSxvKCRWaSxbMiw0NV0sezkxOjY1LDkyOiRWaiw5MzokVmt9KSx7MjA6MjgsNTA6OTUsNjQ6MjksNjU6MzgsNjY6MzksNjc6JFYzLDczOiRWYyw3NTokVjUsNzc6WzEsOTRdLDgyOjMxLDgzOjMyLDg0OiRWNiw4NTokVjcsODY6JFY4LDg3OiRWOSw4ODokVmEsODk6JFZiLDkwOjQxfSx7Njg6WzEsOTZdfSxvKCRWdyxbMiwxMDBdLHs2OTo5N30pLHsyMDoyOCw0OToxMDAsNTA6OTksNTU6OTgsNTY6WzIsOTBdLDY0OjI5LDY1OjM4LDY2OjM5LDY3OiRWMyw3MToyNyw3MjozMCw3MzokVjQsNzU6JFY1LDgyOjMxLDgzOjMyLDg0OiRWNiw4NTokVjcsODY6JFY4LDg3OiRWOSw4ODokVmEsODk6JFZiLDkwOjQxfSx7MjY6MTAxLDQ3OiRWdH0sezQ3OlsyLDYxXX0sbygkVmQsJFYwLHs2OjMsNDoxMDJ9KSx7NDc6WzIsMjBdfSx7MjA6MTAzLDY0OjUzLDY1OjM4LDY2OjM5LDY3OiRWMyw3MzokVmMsNzU6JFY1LDgyOjMxLDgzOjMyLDg0OiRWNiw4NTokVjcsODY6JFY4LDg3OiRWOSw4ODokVmEsODk6JFZiLDkwOjQxfSxvKCRWZywkVjAsezY6Myw0OjEwNH0pLHsyNjoxMDUsNDc6JFZ0fSx7NDc6WzIsNjNdfSxvKCRWMixbMiwxMV0pLG8oJFZmLFsyLDU1XSksezIwOjI4LDMzOlsyLDk0XSw0OToxMDgsNTA6MTA3LDU5OjEwNiw2NDoyOSw2NTozOCw2NjozOSw2NzokVjMsNzE6MjcsNzI6MzAsNzM6JFY0LDc1OiRWNSw4MjozMSw4MzozMiw4NDokVjYsODU6JFY3LDg2OiRWOCw4NzokVjksODg6JFZhLDg5OiRWYiw5MDo0MX0sbygkVjIsWzIsMjZdKSx7MjA6MTA5LDY0OjUzLDY1OjM4LDY2OjM5LDY3OiRWMyw3MzokVmMsNzU6JFY1LDgyOjMxLDgzOjMyLDg0OiRWNiw4NTokVjcsODY6JFY4LDg3OiRWOSw4ODokVmEsODk6JFZiLDkwOjQxfSxvKCRWeCxbMiw2Nl0sezcxOjI3LDIwOjI4LDY0OjI5LDcyOjMwLDgyOjMxLDgzOjMyLDY1OjM4LDY2OjM5LDkwOjQxLDMxOjExMCw1MDoxMTEsNDk6MTEyLDY3OiRWMyw3MzokVjQsNzU6JFY1LDg0OiRWNiw4NTokVjcsODY6JFY4LDg3OiRWOSw4ODokVmEsODk6JFZifSksbygkVngsWzIsNzJdLHs3MToyNywyMDoyOCw2NDoyOSw3MjozMCw4MjozMSw4MzozMiw2NTozOCw2NjozOSw5MDo0MSwzNjoxMTMsNTA6MTE0LDQ5OjExNSw2NzokVjMsNzM6JFY0LDc1OiRWNSw4NDokVjYsODU6JFY3LDg2OiRWOCw4NzokVjksODg6JFZhLDg5OiRWYn0pLHsyMDoyOCwyMjoxMTYsMjM6WzIsNThdLDQ5OjExOCw1MDoxMTcsNjQ6MjksNjU6MzgsNjY6MzksNjc6JFYzLDcxOjI3LDcyOjMwLDczOiRWNCw3NTokVjUsODI6MzEsODM6MzIsODQ6JFY2LDg1OiRWNyw4NjokVjgsODc6JFY5LDg4OiRWYSw4OTokVmIsOTA6NDF9LHsyMDoyOCwzMzpbMiw5OF0sNDk6MTIxLDUwOjEyMCw2MzoxMTksNjQ6MjksNjU6MzgsNjY6MzksNjc6JFYzLDcxOjI3LDcyOjMwLDczOiRWNCw3NTokVjUsODI6MzEsODM6MzIsODQ6JFY2LDg1OiRWNyw4NjokVjgsODc6JFY5LDg4OiRWYSw4OTokVmIsOTA6NDF9LHszMzpbMSwxMjJdfSxvKCRWaCxbMiw4NV0pLHszMzpbMiw4N119LG8oJFZpLFsyLDQ4XSx7OTE6NjUsOTI6JFZqLDkzOiRWa30pLG8oJFZsLFsyLDM1XSksbygkVm0sWzIsNTBdKSxvKCRWbSxbMiwzNl0pLG8oJFZwLFsyLDEwN10pLG8oJFZtLFsyLDMyXSksezIwOjI4LDQ5OjEyNSw1MDoxMjQsNjQ6MjksNjU6MzgsNjY6MzksNjc6JFYzLDY4OlsyLDEwMl0sNzA6MTIzLDcxOjI3LDcyOjMwLDczOiRWNCw3NTokVjUsODI6MzEsODM6MzIsODQ6JFY2LDg1OiRWNyw4NjokVjgsODc6JFY5LDg4OiRWYSw4OTokVmIsOTA6NDF9LHs1NjpbMSwxMjZdfSxvKCRWcSxbMiw4OV0pLHs1NjpbMiw5MV19LG8oJFYyLFsyLDEzXSksezM4OjczLDM5OiRWciw0Mzo3NCw0NDokVnMsNDU6MTI4LDQ2OjEyNyw0NzpbMiw4Ml19LG8oJFZ1LFsyLDc2XSx7NDA6MTI5fSksezQ3OlsyLDE4XX0sbygkVjIsWzIsMTRdKSx7MzM6WzEsMTMwXX0sbygkVmgsWzIsOTNdKSx7MzM6WzIsOTVdfSx7MzM6WzEsMTMxXX0sezMyOjEzMiwzMzpbMiw2OF0sNzg6MTMzLDc5OiRWeX0sbygkVnUsWzIsNjVdKSxvKCRWeCxbMiw2N10pLHszMzpbMiw3NF0sMzc6MTM1LDc4OjEzNiw3OTokVnl9LG8oJFZ1LFsyLDcxXSksbygkVngsWzIsNzNdKSx7MjM6WzEsMTM3XX0sbygkVnYsWzIsNTddKSx7MjM6WzIsNTldfSx7MzM6WzEsMTM4XX0sbygkVmgsWzIsOTddKSx7MzM6WzIsOTldfSxvKCRWMixbMiwyM10pLHs2ODpbMSwxMzldfSxvKCRWdyxbMiwxMDFdKSx7Njg6WzIsMTAzXX0sbygkVjIsWzIsMjRdKSx7NDc6WzIsMTldfSx7NDc6WzIsODNdfSxvKCRWeCxbMiw3OF0sezcxOjI3LDIwOjI4LDY0OjI5LDcyOjMwLDgyOjMxLDgzOjMyLDY1OjM4LDY2OjM5LDkwOjQxLDQxOjE0MCw1MDoxNDEsNDk6MTQyLDY3OiRWMyw3MzokVjQsNzU6JFY1LDg0OiRWNiw4NTokVjcsODY6JFY4LDg3OiRWOSw4ODokVmEsODk6JFZifSksbygkVjIsWzIsMjVdKSxvKCRWMixbMiwyMV0pLHszMzpbMSwxNDNdfSx7MzM6WzIsNjldfSx7NzM6WzEsMTQ1XSw4MDoxNDR9LHszMzpbMSwxNDZdfSx7MzM6WzIsNzVdfSxvKCRWZixbMiwxMl0pLG8oJFZnLFsyLDI3XSksbygkVm0sWzIsMzNdKSx7MzM6WzIsODBdLDQyOjE0Nyw3ODoxNDgsNzk6JFZ5fSxvKCRWdSxbMiw3N10pLG8oJFZ4LFsyLDc5XSksbygkVmQsWzIsMTVdKSx7NzM6WzEsMTUwXSw4MTpbMSwxNDldfSxvKCRWeixbMiwxMDhdKSxvKCRWZSxbMiwxNl0pLHszMzpbMSwxNTFdfSx7MzM6WzIsODFdfSx7MzM6WzIsMzddfSxvKCRWeixbMiwxMDldKSxvKCRWZCxbMiwxN10pXSxcbmRlZmF1bHRBY3Rpb25zOiB7NDpbMiwxXSw2MjpbMiw0Nl0sNjM6WzIsNDddLDcyOlsyLDYxXSw3NDpbMiwyMF0sNzg6WzIsNjNdLDkwOlsyLDg3XSwxMDA6WzIsOTFdLDEwNDpbMiwxOF0sMTA4OlsyLDk1XSwxMTg6WzIsNTldLDEyMTpbMiw5OV0sMTI1OlsyLDEwM10sMTI3OlsyLDE5XSwxMjg6WzIsODNdLDEzMzpbMiw2OV0sMTM2OlsyLDc1XSwxNDg6WzIsODFdLDE0OTpbMiwzN119LFxucGFyc2VFcnJvcjogZnVuY3Rpb24gcGFyc2VFcnJvciAoc3RyLCBoYXNoKSB7XG4gICAgaWYgKGhhc2gucmVjb3ZlcmFibGUpIHtcbiAgICAgICAgdGhpcy50cmFjZShzdHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcihzdHIpO1xuICAgICAgICBlcnJvci5oYXNoID0gaGFzaDtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufSxcbnBhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkge1xuICAgIHZhciBzZWxmID0gdGhpcywgc3RhY2sgPSBbMF0sIHRzdGFjayA9IFtdLCB2c3RhY2sgPSBbbnVsbF0sIGxzdGFjayA9IFtdLCB0YWJsZSA9IHRoaXMudGFibGUsIHl5dGV4dCA9ICcnLCB5eWxpbmVubyA9IDAsIHl5bGVuZyA9IDAsIHJlY292ZXJpbmcgPSAwLCBURVJST1IgPSAyLCBFT0YgPSAxO1xuICAgIHZhciBhcmdzID0gbHN0YWNrLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICB2YXIgbGV4ZXIgPSBPYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpO1xuICAgIHZhciBzaGFyZWRTdGF0ZSA9IHsgeXk6IHt9IH07XG4gICAgZm9yICh2YXIgayBpbiB0aGlzLnl5KSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSwgaykpIHtcbiAgICAgICAgICAgIHNoYXJlZFN0YXRlLnl5W2tdID0gdGhpcy55eVtrXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXhlci5zZXRJbnB1dChpbnB1dCwgc2hhcmVkU3RhdGUueXkpO1xuICAgIHNoYXJlZFN0YXRlLnl5LmxleGVyID0gbGV4ZXI7XG4gICAgc2hhcmVkU3RhdGUueXkucGFyc2VyID0gdGhpcztcbiAgICBpZiAodHlwZW9mIGxleGVyLnl5bGxvYyA9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBsZXhlci55eWxsb2MgPSB7fTtcbiAgICB9XG4gICAgdmFyIHl5bG9jID0gbGV4ZXIueXlsbG9jO1xuICAgIGxzdGFjay5wdXNoKHl5bG9jKTtcbiAgICB2YXIgcmFuZ2VzID0gbGV4ZXIub3B0aW9ucyAmJiBsZXhlci5vcHRpb25zLnJhbmdlcztcbiAgICBpZiAodHlwZW9mIHNoYXJlZFN0YXRlLnl5LnBhcnNlRXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wYXJzZUVycm9yID0gc2hhcmVkU3RhdGUueXkucGFyc2VFcnJvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtcbiAgICB9XG4gICAgZnVuY3Rpb24gcG9wU3RhY2sobikge1xuICAgICAgICBzdGFjay5sZW5ndGggPSBzdGFjay5sZW5ndGggLSAyICogbjtcbiAgICAgICAgdnN0YWNrLmxlbmd0aCA9IHZzdGFjay5sZW5ndGggLSBuO1xuICAgICAgICBsc3RhY2subGVuZ3RoID0gbHN0YWNrLmxlbmd0aCAtIG47XG4gICAgfVxuICAgIF90b2tlbl9zdGFjazpcbiAgICAgICAgdmFyIGxleCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0b2tlbjtcbiAgICAgICAgICAgIHRva2VuID0gbGV4ZXIubGV4KCkgfHwgRU9GO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2VuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9O1xuICAgIHZhciBzeW1ib2wsIHByZUVycm9yU3ltYm9sLCBzdGF0ZSwgYWN0aW9uLCBhLCByLCB5eXZhbCA9IHt9LCBwLCBsZW4sIG5ld1N0YXRlLCBleHBlY3RlZDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICBzdGF0ZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV0pIHtcbiAgICAgICAgICAgIGFjdGlvbiA9IHRoaXMuZGVmYXVsdEFjdGlvbnNbc3RhdGVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHN5bWJvbCA9PT0gbnVsbCB8fCB0eXBlb2Ygc3ltYm9sID09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgc3ltYm9sID0gbGV4KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3Rpb24gPSB0YWJsZVtzdGF0ZV0gJiYgdGFibGVbc3RhdGVdW3N5bWJvbF07XG4gICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24gPT09ICd1bmRlZmluZWQnIHx8ICFhY3Rpb24ubGVuZ3RoIHx8ICFhY3Rpb25bMF0pIHtcbiAgICAgICAgICAgICAgICB2YXIgZXJyU3RyID0gJyc7XG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKHAgaW4gdGFibGVbc3RhdGVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRlcm1pbmFsc19bcF0gJiYgcCA+IFRFUlJPUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucHVzaCgnXFwnJyArIHRoaXMudGVybWluYWxzX1twXSArICdcXCcnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobGV4ZXIuc2hvd1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGVyclN0ciA9ICdQYXJzZSBlcnJvciBvbiBsaW5lICcgKyAoeXlsaW5lbm8gKyAxKSArICc6XFxuJyArIGxleGVyLnNob3dQb3NpdGlvbigpICsgJ1xcbkV4cGVjdGluZyAnICsgZXhwZWN0ZWQuam9pbignLCAnKSArICcsIGdvdCBcXCcnICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyAnXFwnJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSAnUGFyc2UgZXJyb3Igb24gbGluZSAnICsgKHl5bGluZW5vICsgMSkgKyAnOiBVbmV4cGVjdGVkICcgKyAoc3ltYm9sID09IEVPRiA/ICdlbmQgb2YgaW5wdXQnIDogJ1xcJycgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArICdcXCcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJzZUVycm9yKGVyclN0ciwge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBsZXhlci5tYXRjaCxcbiAgICAgICAgICAgICAgICAgICAgdG9rZW46IHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCxcbiAgICAgICAgICAgICAgICAgICAgbGluZTogbGV4ZXIueXlsaW5lbm8sXG4gICAgICAgICAgICAgICAgICAgIGxvYzogeXlsb2MsXG4gICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBleHBlY3RlZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uWzBdIGluc3RhbmNlb2YgQXJyYXkgJiYgYWN0aW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICcgKyBzdGF0ZSArICcsIHRva2VuOiAnICsgc3ltYm9sKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGFjdGlvblswXSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBzdGFjay5wdXNoKHN5bWJvbCk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaChsZXhlci55eXRleHQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2gobGV4ZXIueXlsbG9jKTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2goYWN0aW9uWzFdKTtcbiAgICAgICAgICAgIHN5bWJvbCA9IG51bGw7XG4gICAgICAgICAgICBpZiAoIXByZUVycm9yU3ltYm9sKSB7XG4gICAgICAgICAgICAgICAgeXlsZW5nID0gbGV4ZXIueXlsZW5nO1xuICAgICAgICAgICAgICAgIHl5dGV4dCA9IGxleGVyLnl5dGV4dDtcbiAgICAgICAgICAgICAgICB5eWxpbmVubyA9IGxleGVyLnl5bGluZW5vO1xuICAgICAgICAgICAgICAgIHl5bG9jID0gbGV4ZXIueXlsbG9jO1xuICAgICAgICAgICAgICAgIGlmIChyZWNvdmVyaW5nID4gMCkge1xuICAgICAgICAgICAgICAgICAgICByZWNvdmVyaW5nLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzeW1ib2wgPSBwcmVFcnJvclN5bWJvbDtcbiAgICAgICAgICAgICAgICBwcmVFcnJvclN5bWJvbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgbGVuID0gdGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVsxXTtcbiAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07XG4gICAgICAgICAgICB5eXZhbC5fJCA9IHtcbiAgICAgICAgICAgICAgICBmaXJzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgICAgbGFzdF9saW5lOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfbGluZSxcbiAgICAgICAgICAgICAgICBmaXJzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICAgIGxhc3RfY29sdW1uOiBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLmxhc3RfY29sdW1uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHJhbmdlcykge1xuICAgICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW1xuICAgICAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIChsZW4gfHwgMSldLnJhbmdlWzBdLFxuICAgICAgICAgICAgICAgICAgICBsc3RhY2tbbHN0YWNrLmxlbmd0aCAtIDFdLnJhbmdlWzFdXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHIgPSB0aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoeXl2YWwsIFtcbiAgICAgICAgICAgICAgICB5eXRleHQsXG4gICAgICAgICAgICAgICAgeXlsZW5nLFxuICAgICAgICAgICAgICAgIHl5bGluZW5vLFxuICAgICAgICAgICAgICAgIHNoYXJlZFN0YXRlLnl5LFxuICAgICAgICAgICAgICAgIGFjdGlvblsxXSxcbiAgICAgICAgICAgICAgICB2c3RhY2ssXG4gICAgICAgICAgICAgICAgbHN0YWNrXG4gICAgICAgICAgICBdLmNvbmNhdChhcmdzKSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGVuKSB7XG4gICAgICAgICAgICAgICAgc3RhY2sgPSBzdGFjay5zbGljZSgwLCAtMSAqIGxlbiAqIDIpO1xuICAgICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICAgICAgbHN0YWNrID0gbHN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVswXSk7XG4gICAgICAgICAgICB2c3RhY2sucHVzaCh5eXZhbC4kKTtcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5dmFsLl8kKTtcbiAgICAgICAgICAgIG5ld1N0YXRlID0gdGFibGVbc3RhY2tbc3RhY2subGVuZ3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gobmV3U3RhdGUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufX07XG4vKiBnZW5lcmF0ZWQgYnkgamlzb24tbGV4IDAuMy40ICovXG52YXIgbGV4ZXIgPSAoZnVuY3Rpb24oKXtcbnZhciBsZXhlciA9ICh7XG5cbkVPRjoxLFxuXG5wYXJzZUVycm9yOmZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICAgIGlmICh0aGlzLnl5LnBhcnNlcikge1xuICAgICAgICAgICAgdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihzdHIsIGhhc2gpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHN0cik7XG4gICAgICAgIH1cbiAgICB9LFxuXG4vLyByZXNldHMgdGhlIGxleGVyLCBzZXRzIG5ldyBpbnB1dFxuc2V0SW5wdXQ6ZnVuY3Rpb24gKGlucHV0LCB5eSkge1xuICAgICAgICB0aGlzLnl5ID0geXkgfHwgdGhpcy55eSB8fCB7fTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5fbW9yZSA9IHRoaXMuX2JhY2t0cmFjayA9IHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnl5bGluZW5vID0gdGhpcy55eWxlbmcgPSAwO1xuICAgICAgICB0aGlzLnl5dGV4dCA9IHRoaXMubWF0Y2hlZCA9IHRoaXMubWF0Y2ggPSAnJztcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFsnSU5JVElBTCddO1xuICAgICAgICB0aGlzLnl5bGxvYyA9IHtcbiAgICAgICAgICAgIGZpcnN0X2xpbmU6IDEsXG4gICAgICAgICAgICBmaXJzdF9jb2x1bW46IDAsXG4gICAgICAgICAgICBsYXN0X2xpbmU6IDEsXG4gICAgICAgICAgICBsYXN0X2NvbHVtbjogMFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbMCwwXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG5cbi8vIGNvbnN1bWVzIGFuZCByZXR1cm5zIG9uZSBjaGFyIGZyb20gdGhlIGlucHV0XG5pbnB1dDpmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjaCA9IHRoaXMuX2lucHV0WzBdO1xuICAgICAgICB0aGlzLnl5dGV4dCArPSBjaDtcbiAgICAgICAgdGhpcy55eWxlbmcrKztcbiAgICAgICAgdGhpcy5vZmZzZXQrKztcbiAgICAgICAgdGhpcy5tYXRjaCArPSBjaDtcbiAgICAgICAgdGhpcy5tYXRjaGVkICs9IGNoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5tYXRjaCgvKD86XFxyXFxuP3xcXG4pLiovZyk7XG4gICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgICAgdGhpcy55eWxpbmVubysrO1xuICAgICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9saW5lKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZSgxKTtcbiAgICAgICAgcmV0dXJuIGNoO1xuICAgIH0sXG5cbi8vIHVuc2hpZnRzIG9uZSBjaGFyIChvciBhIHN0cmluZykgaW50byB0aGUgaW5wdXRcbnVucHV0OmZ1bmN0aW9uIChjaCkge1xuICAgICAgICB2YXIgbGVuID0gY2gubGVuZ3RoO1xuICAgICAgICB2YXIgbGluZXMgPSBjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuXG4gICAgICAgIHRoaXMuX2lucHV0ID0gY2ggKyB0aGlzLl9pbnB1dDtcbiAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLnl5dGV4dC5zdWJzdHIoMCwgdGhpcy55eXRleHQubGVuZ3RoIC0gbGVuKTtcbiAgICAgICAgLy90aGlzLnl5bGVuZyAtPSBsZW47XG4gICAgICAgIHRoaXMub2Zmc2V0IC09IGxlbjtcbiAgICAgICAgdmFyIG9sZExpbmVzID0gdGhpcy5tYXRjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuICAgICAgICB0aGlzLm1hdGNoID0gdGhpcy5tYXRjaC5zdWJzdHIoMCwgdGhpcy5tYXRjaC5sZW5ndGggLSAxKTtcbiAgICAgICAgdGhpcy5tYXRjaGVkID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gMSk7XG5cbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMueXlsaW5lbm8gLT0gbGluZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgciA9IHRoaXMueXlsbG9jLnJhbmdlO1xuXG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSxcbiAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy55eWxpbmVubyArIDEsXG4gICAgICAgICAgICBmaXJzdF9jb2x1bW46IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/XG4gICAgICAgICAgICAgICAgKGxpbmVzLmxlbmd0aCA9PT0gb2xkTGluZXMubGVuZ3RoID8gdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIDogMClcbiAgICAgICAgICAgICAgICAgKyBvbGRMaW5lc1tvbGRMaW5lcy5sZW5ndGggLSBsaW5lcy5sZW5ndGhdLmxlbmd0aCAtIGxpbmVzWzBdLmxlbmd0aCA6XG4gICAgICAgICAgICAgIHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiAtIGxlblxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFtyWzBdLCByWzBdICsgdGhpcy55eWxlbmcgLSBsZW5dO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4vLyBXaGVuIGNhbGxlZCBmcm9tIGFjdGlvbiwgY2FjaGVzIG1hdGNoZWQgdGV4dCBhbmQgYXBwZW5kcyBpdCBvbiBuZXh0IGFjdGlvblxubW9yZTpmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4vLyBXaGVuIGNhbGxlZCBmcm9tIGFjdGlvbiwgc2lnbmFscyB0aGUgbGV4ZXIgdGhhdCB0aGlzIHJ1bGUgZmFpbHMgdG8gbWF0Y2ggdGhlIGlucHV0LCBzbyB0aGUgbmV4dCBtYXRjaGluZyBydWxlIChyZWdleCkgc2hvdWxkIGJlIHRlc3RlZCBpbnN0ZWFkLlxucmVqZWN0OmZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2JhY2t0cmFjayA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVycm9yKCdMZXhpY2FsIGVycm9yIG9uIGxpbmUgJyArICh0aGlzLnl5bGluZW5vICsgMSkgKyAnLiBZb3UgY2FuIG9ubHkgaW52b2tlIHJlamVjdCgpIGluIHRoZSBsZXhlciB3aGVuIHRoZSBsZXhlciBpcyBvZiB0aGUgYmFja3RyYWNraW5nIHBlcnN1YXNpb24gKG9wdGlvbnMuYmFja3RyYWNrX2xleGVyID0gdHJ1ZSkuXFxuJyArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMueXlsaW5lbm9cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcblxuLy8gcmV0YWluIGZpcnN0IG4gY2hhcmFjdGVycyBvZiB0aGUgbWF0Y2hcbmxlc3M6ZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgdGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKG4pKTtcbiAgICB9LFxuXG4vLyBkaXNwbGF5cyBhbHJlYWR5IG1hdGNoZWQgaW5wdXQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG5wYXN0SW5wdXQ6ZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcGFzdCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIHRoaXMubWF0Y2gubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIChwYXN0Lmxlbmd0aCA+IDIwID8gJy4uLic6JycpICsgcGFzdC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgfSxcblxuLy8gZGlzcGxheXMgdXBjb21pbmcgaW5wdXQsIGkuZS4gZm9yIGVycm9yIG1lc3NhZ2VzXG51cGNvbWluZ0lucHV0OmZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG5leHQgPSB0aGlzLm1hdGNoO1xuICAgICAgICBpZiAobmV4dC5sZW5ndGggPCAyMCkge1xuICAgICAgICAgICAgbmV4dCArPSB0aGlzLl9pbnB1dC5zdWJzdHIoMCwgMjAtbmV4dC5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAobmV4dC5zdWJzdHIoMCwyMCkgKyAobmV4dC5sZW5ndGggPiAyMCA/ICcuLi4nIDogJycpKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgfSxcblxuLy8gZGlzcGxheXMgdGhlIGNoYXJhY3RlciBwb3NpdGlvbiB3aGVyZSB0aGUgbGV4aW5nIGVycm9yIG9jY3VycmVkLCBpLmUuIGZvciBlcnJvciBtZXNzYWdlc1xuc2hvd1Bvc2l0aW9uOmZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHByZSA9IHRoaXMucGFzdElucHV0KCk7XG4gICAgICAgIHZhciBjID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKFwiLVwiKTtcbiAgICAgICAgcmV0dXJuIHByZSArIHRoaXMudXBjb21pbmdJbnB1dCgpICsgXCJcXG5cIiArIGMgKyBcIl5cIjtcbiAgICB9LFxuXG4vLyB0ZXN0IHRoZSBsZXhlZCB0b2tlbjogcmV0dXJuIEZBTFNFIHdoZW4gbm90IGEgbWF0Y2gsIG90aGVyd2lzZSByZXR1cm4gdG9rZW5cbnRlc3RfbWF0Y2g6ZnVuY3Rpb24obWF0Y2gsIGluZGV4ZWRfcnVsZSkge1xuICAgICAgICB2YXIgdG9rZW4sXG4gICAgICAgICAgICBsaW5lcyxcbiAgICAgICAgICAgIGJhY2t1cDtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgICAgLy8gc2F2ZSBjb250ZXh0XG4gICAgICAgICAgICBiYWNrdXAgPSB7XG4gICAgICAgICAgICAgICAgeXlsaW5lbm86IHRoaXMueXlsaW5lbm8sXG4gICAgICAgICAgICAgICAgeXlsbG9jOiB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgICAgICAgICAgIGxhc3RfbGluZTogdGhpcy5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW5cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHl5dGV4dDogdGhpcy55eXRleHQsXG4gICAgICAgICAgICAgICAgbWF0Y2g6IHRoaXMubWF0Y2gsXG4gICAgICAgICAgICAgICAgbWF0Y2hlczogdGhpcy5tYXRjaGVzLFxuICAgICAgICAgICAgICAgIG1hdGNoZWQ6IHRoaXMubWF0Y2hlZCxcbiAgICAgICAgICAgICAgICB5eWxlbmc6IHRoaXMueXlsZW5nLFxuICAgICAgICAgICAgICAgIG9mZnNldDogdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgX21vcmU6IHRoaXMuX21vcmUsXG4gICAgICAgICAgICAgICAgX2lucHV0OiB0aGlzLl9pbnB1dCxcbiAgICAgICAgICAgICAgICB5eTogdGhpcy55eSxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25TdGFjazogdGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxcbiAgICAgICAgICAgICAgICBkb25lOiB0aGlzLmRvbmVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgICAgIGJhY2t1cC55eWxsb2MucmFuZ2UgPSB0aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxpbmVzID0gbWF0Y2hbMF0ubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICBpZiAobGluZXMpIHtcbiAgICAgICAgICAgIHRoaXMueXlsaW5lbm8gKz0gbGluZXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueXlsbG9jID0ge1xuICAgICAgICAgICAgZmlyc3RfbGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLFxuICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4sXG4gICAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCAtIGxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdLm1hdGNoKC9cXHI/XFxuPy8pWzBdLmxlbmd0aCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MubGFzdF9jb2x1bW4gKyBtYXRjaFswXS5sZW5ndGhcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy55eXRleHQgKz0gbWF0Y2hbMF07XG4gICAgICAgIHRoaXMubWF0Y2ggKz0gbWF0Y2hbMF07XG4gICAgICAgIHRoaXMubWF0Y2hlcyA9IG1hdGNoO1xuICAgICAgICB0aGlzLnl5bGVuZyA9IHRoaXMueXl0ZXh0Lmxlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMueXlsbG9jLnJhbmdlID0gW3RoaXMub2Zmc2V0LCB0aGlzLm9mZnNldCArPSB0aGlzLnl5bGVuZ107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbW9yZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9iYWNrdHJhY2sgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZShtYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gbWF0Y2hbMF07XG4gICAgICAgIHRva2VuID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcywgdGhpcy55eSwgdGhpcywgaW5kZXhlZF9ydWxlLCB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMV0pO1xuICAgICAgICBpZiAodGhpcy5kb25lICYmIHRoaXMuX2lucHV0KSB7XG4gICAgICAgICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9iYWNrdHJhY2spIHtcbiAgICAgICAgICAgIC8vIHJlY292ZXIgY29udGV4dFxuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBiYWNrdXApIHtcbiAgICAgICAgICAgICAgICB0aGlzW2tdID0gYmFja3VwW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBydWxlIGFjdGlvbiBjYWxsZWQgcmVqZWN0KCkgaW1wbHlpbmcgdGhlIG5leHQgcnVsZSBzaG91bGQgYmUgdGVzdGVkIGluc3RlYWQuXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG5cbi8vIHJldHVybiBuZXh0IG1hdGNoIGluIGlucHV0XG5uZXh0OmZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdG9rZW4sXG4gICAgICAgICAgICBtYXRjaCxcbiAgICAgICAgICAgIHRlbXBNYXRjaCxcbiAgICAgICAgICAgIGluZGV4O1xuICAgICAgICBpZiAoIXRoaXMuX21vcmUpIHtcbiAgICAgICAgICAgIHRoaXMueXl0ZXh0ID0gJyc7XG4gICAgICAgICAgICB0aGlzLm1hdGNoID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJ1bGVzID0gdGhpcy5fY3VycmVudFJ1bGVzKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRlbXBNYXRjaCA9IHRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbcnVsZXNbaV1dKTtcbiAgICAgICAgICAgIGlmICh0ZW1wTWF0Y2ggJiYgKCFtYXRjaCB8fCB0ZW1wTWF0Y2hbMF0ubGVuZ3RoID4gbWF0Y2hbMF0ubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgIG1hdGNoID0gdGVtcE1hdGNoO1xuICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcikge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudGVzdF9tYXRjaCh0ZW1wTWF0Y2gsIHJ1bGVzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JhY2t0cmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBydWxlIGFjdGlvbiBjYWxsZWQgcmVqZWN0KCkgaW1wbHlpbmcgYSBydWxlIE1JU21hdGNoLlxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxzZTogdGhpcyBpcyBhIGxleGVyIHJ1bGUgd2hpY2ggY29uc3VtZXMgaW5wdXQgd2l0aG91dCBwcm9kdWNpbmcgYSB0b2tlbiAoZS5nLiB3aGl0ZXNwYWNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5vcHRpb25zLmZsZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRlc3RfbWF0Y2gobWF0Y2gsIHJ1bGVzW2luZGV4XSk7XG4gICAgICAgICAgICBpZiAodG9rZW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZWxzZTogdGhpcyBpcyBhIGxleGVyIHJ1bGUgd2hpY2ggY29uc3VtZXMgaW5wdXQgd2l0aG91dCBwcm9kdWNpbmcgYSB0b2tlbiAoZS5nLiB3aGl0ZXNwYWNlKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9pbnB1dCA9PT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcignTGV4aWNhbCBlcnJvciBvbiBsaW5lICcgKyAodGhpcy55eWxpbmVubyArIDEpICsgJy4gVW5yZWNvZ25pemVkIHRleHQuXFxuJyArIHRoaXMuc2hvd1Bvc2l0aW9uKCksIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgICAgICAgIHRva2VuOiBudWxsLFxuICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMueXlsaW5lbm9cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSxcblxuLy8gcmV0dXJuIG5leHQgbWF0Y2ggdGhhdCBoYXMgYSB0b2tlblxubGV4OmZ1bmN0aW9uIGxleCAoKSB7XG4gICAgICAgIHZhciByID0gdGhpcy5uZXh0KCk7XG4gICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxleCgpO1xuICAgICAgICB9XG4gICAgfSxcblxuLy8gYWN0aXZhdGVzIGEgbmV3IGxleGVyIGNvbmRpdGlvbiBzdGF0ZSAocHVzaGVzIHRoZSBuZXcgbGV4ZXIgY29uZGl0aW9uIHN0YXRlIG9udG8gdGhlIGNvbmRpdGlvbiBzdGFjaylcbmJlZ2luOmZ1bmN0aW9uIGJlZ2luIChjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjay5wdXNoKGNvbmRpdGlvbik7XG4gICAgfSxcblxuLy8gcG9wIHRoZSBwcmV2aW91c2x5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGUgb2ZmIHRoZSBjb25kaXRpb24gc3RhY2tcbnBvcFN0YXRlOmZ1bmN0aW9uIHBvcFN0YXRlICgpIHtcbiAgICAgICAgdmFyIG4gPSB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICAgIGlmIChuID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1swXTtcbiAgICAgICAgfVxuICAgIH0sXG5cbi8vIHByb2R1Y2UgdGhlIGxleGVyIHJ1bGUgc2V0IHdoaWNoIGlzIGFjdGl2ZSBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgbGV4ZXIgY29uZGl0aW9uIHN0YXRlXG5fY3VycmVudFJ1bGVzOmZ1bmN0aW9uIF9jdXJyZW50UnVsZXMgKCkge1xuICAgICAgICBpZiAodGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggJiYgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXV0ucnVsZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW1wiSU5JVElBTFwiXS5ydWxlcztcbiAgICAgICAgfVxuICAgIH0sXG5cbi8vIHJldHVybiB0aGUgY3VycmVudGx5IGFjdGl2ZSBsZXhlciBjb25kaXRpb24gc3RhdGU7IHdoZW4gYW4gaW5kZXggYXJndW1lbnQgaXMgcHJvdmlkZWQgaXQgcHJvZHVjZXMgdGhlIE4tdGggcHJldmlvdXMgY29uZGl0aW9uIHN0YXRlLCBpZiBhdmFpbGFibGVcbnRvcFN0YXRlOmZ1bmN0aW9uIHRvcFN0YXRlIChuKSB7XG4gICAgICAgIG4gPSB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDEgLSBNYXRoLmFicyhuIHx8IDApO1xuICAgICAgICBpZiAobiA+PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25TdGFja1tuXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBcIklOSVRJQUxcIjtcbiAgICAgICAgfVxuICAgIH0sXG5cbi8vIGFsaWFzIGZvciBiZWdpbihjb25kaXRpb24pXG5wdXNoU3RhdGU6ZnVuY3Rpb24gcHVzaFN0YXRlIChjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5iZWdpbihjb25kaXRpb24pO1xuICAgIH0sXG5cbi8vIHJldHVybiB0aGUgbnVtYmVyIG9mIHN0YXRlcyBjdXJyZW50bHkgb24gdGhlIHN0YWNrXG5zdGF0ZVN0YWNrU2l6ZTpmdW5jdGlvbiBzdGF0ZVN0YWNrU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoO1xuICAgIH0sXG5vcHRpb25zOiB7fSxcbnBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eSx5eV8sJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucyxZWV9TVEFSVCkge1xuXG5mdW5jdGlvbiBzdHJpcChzdGFydCwgZW5kKSB7XG4gIHJldHVybiB5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHJpbmcoc3RhcnQsIHl5Xy55eWxlbmcgLSBlbmQgKyBzdGFydCk7XG59XG5cblxudmFyIFlZU1RBVEU9WVlfU1RBUlQ7XG5zd2l0Y2goJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykge1xuY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih5eV8ueXl0ZXh0LnNsaWNlKC0yKSA9PT0gXCJcXFxcXFxcXFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAoMCwxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKFwibXVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZih5eV8ueXl0ZXh0LnNsaWNlKC0xKSA9PT0gXCJcXFxcXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcCgwLDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJlbXVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbihcIm11XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHl5Xy55eXRleHQpIHJldHVybiAxNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuYnJlYWs7XG5jYXNlIDE6cmV0dXJuIDE1O1xuYnJlYWs7XG5jYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5icmVhaztcbmNhc2UgMzp0aGlzLmJlZ2luKCdyYXcnKTsgcmV0dXJuIDE1O1xuYnJlYWs7XG5jYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNob3VsZCBiZSB1c2luZyBgdGhpcy50b3BTdGF0ZSgpYCBiZWxvdywgYnV0IGl0IGN1cnJlbnRseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybnMgdGhlIHNlY29uZCB0b3AgaW5zdGVhZCBvZiB0aGUgZmlyc3QgdG9wLiBPcGVuZWQgYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpc3N1ZSBhYm91dCBpdCBhdCBodHRwczovL2dpdGh1Yi5jb20vemFhY2gvamlzb24vaXNzdWVzLzI5MVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdID09PSAncmF3Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcCg1LCA5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmJyZWFrO1xuY2FzZSA1OiByZXR1cm4gMTU7IFxuYnJlYWs7XG5jYXNlIDY6XG4gIHRoaXMucG9wU3RhdGUoKTtcbiAgcmV0dXJuIDE0O1xuXG5icmVhaztcbmNhc2UgNzpyZXR1cm4gNjc7XG5icmVhaztcbmNhc2UgODpyZXR1cm4gNjg7XG5icmVhaztcbmNhc2UgOTpcbiAgaWYgKHl5LnN5bnRheC5zcXVhcmUgPT09ICdzdHJpbmcnKSB7XG4gICAgdGhpcy51bnB1dCh5eV8ueXl0ZXh0KTtcbiAgICAvLyBlc2NhcGVkIGxpdGVyYWxcbiAgICB0aGlzLmJlZ2luKCdlc2NsJyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDc1O1xuICB9XG5cbmJyZWFrO1xuY2FzZSAxMDpyZXR1cm4gNzc7XG5icmVhaztcbmNhc2UgMTE6IHJldHVybiAxOTsgXG5icmVhaztcbmNhc2UgMTI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oJ3JhdycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuYnJlYWs7XG5jYXNlIDEzOnJldHVybiA1NztcbmJyZWFrO1xuY2FzZSAxNDpyZXR1cm4gNjE7XG5icmVhaztcbmNhc2UgMTU6cmV0dXJuIDI5O1xuYnJlYWs7XG5jYXNlIDE2OnJldHVybiA0NztcbmJyZWFrO1xuY2FzZSAxNzp0aGlzLnBvcFN0YXRlKCk7IHJldHVybiA0NDtcbmJyZWFrO1xuY2FzZSAxODp0aGlzLnBvcFN0YXRlKCk7IHJldHVybiA0NDtcbmJyZWFrO1xuY2FzZSAxOTpyZXR1cm4gMzQ7XG5icmVhaztcbmNhc2UgMjA6cmV0dXJuIDM5O1xuYnJlYWs7XG5jYXNlIDIxOnJldHVybiA1MztcbmJyZWFrO1xuY2FzZSAyMjpyZXR1cm4gNDg7XG5icmVhaztcbmNhc2UgMjM6XG4gIHRoaXMudW5wdXQoeXlfLnl5dGV4dCk7XG4gIHRoaXMucG9wU3RhdGUoKTtcbiAgdGhpcy5iZWdpbignY29tJyk7XG5cbmJyZWFrO1xuY2FzZSAyNDpcbiAgdGhpcy5wb3BTdGF0ZSgpO1xuICByZXR1cm4gMTQ7XG5cbmJyZWFrO1xuY2FzZSAyNTpyZXR1cm4gNDg7XG5icmVhaztcbmNhc2UgMjY6cmV0dXJuIDc0O1xuYnJlYWs7XG5jYXNlIDI3OnJldHVybiA3MztcbmJyZWFrO1xuY2FzZSAyODpyZXR1cm4gNzM7XG5icmVhaztcbmNhc2UgMjk6cmV0dXJuIDkzO1xuYnJlYWs7XG5jYXNlIDMwOnJldHVybiA5MjtcbmJyZWFrO1xuY2FzZSAzMTovLyBpZ25vcmUgd2hpdGVzcGFjZVxuYnJlYWs7XG5jYXNlIDMyOnRoaXMucG9wU3RhdGUoKTsgcmV0dXJuIDU2O1xuYnJlYWs7XG5jYXNlIDMzOnRoaXMucG9wU3RhdGUoKTsgcmV0dXJuIDMzO1xuYnJlYWs7XG5jYXNlIDM0Onl5Xy55eXRleHQgPSBzdHJpcCgxLDIpLnJlcGxhY2UoL1xcXFxcIi9nLCdcIicpOyByZXR1cm4gODQ7XG5icmVhaztcbmNhc2UgMzU6eXlfLnl5dGV4dCA9IHN0cmlwKDEsMikucmVwbGFjZSgvXFxcXCcvZyxcIidcIik7IHJldHVybiA4NDtcbmJyZWFrO1xuY2FzZSAzNjpyZXR1cm4gODk7XG5icmVhaztcbmNhc2UgMzc6cmV0dXJuIDg2O1xuYnJlYWs7XG5jYXNlIDM4OnJldHVybiA4NjtcbmJyZWFrO1xuY2FzZSAzOTpyZXR1cm4gODc7XG5icmVhaztcbmNhc2UgNDA6cmV0dXJuIDg4O1xuYnJlYWs7XG5jYXNlIDQxOnJldHVybiA4NTtcbmJyZWFrO1xuY2FzZSA0MjpyZXR1cm4gNzk7XG5icmVhaztcbmNhc2UgNDM6cmV0dXJuIDgxO1xuYnJlYWs7XG5jYXNlIDQ0OnJldHVybiA3MztcbmJyZWFrO1xuY2FzZSA0NTpcbiAgeXlfLnl5dGV4dCA9IHl5Xy55eXRleHQucmVwbGFjZSgvXFxcXChbXFxcXFxcXV0pL2csJyQxJyk7XG4gIHRoaXMucG9wU3RhdGUoKTtcbiAgcmV0dXJuIDczO1xuXG5icmVhaztcbmNhc2UgNDY6cmV0dXJuICdJTlZBTElEJztcbmJyZWFrO1xuY2FzZSA0NzpyZXR1cm4gNTtcbmJyZWFrO1xufVxufSxcbnJ1bGVzOiBbL14oPzpbXlxceDAwXSo/KD89KFxce1xceykpKS8sL14oPzpbXlxceDAwXSspLywvXig/OlteXFx4MDBdezIsfT8oPz0oXFx7XFx7fFxcXFxcXHtcXHt8XFxcXFxcXFxcXHtcXHt8JCkpKS8sL14oPzpcXHtcXHtcXHtcXHsoPz1bXi9dKSkvLC9eKD86XFx7XFx7XFx7XFx7XFwvW15cXHMhXCIjJS0sXFwuXFwvOy0+QFxcWy1cXF5gXFx7LX5dKyg/PVs9fVxcc1xcLy5dKVxcfVxcfVxcfVxcfSkvLC9eKD86W15cXHgwMF0rPyg/PShcXHtcXHtcXHtcXHspKSkvLC9eKD86W1xcc1xcU10qPy0tKH4pP1xcfVxcfSkvLC9eKD86XFwoKS8sL14oPzpcXCkpLywvXig/OlxcWykvLC9eKD86XFxdKS8sL14oPzpcXHtcXHtcXHtcXHspLywvXig/OlxcfVxcfVxcfVxcfSkvLC9eKD86XFx7XFx7KH4pPz4pLywvXig/Olxce1xceyh+KT8jPikvLC9eKD86XFx7XFx7KH4pPyNcXCo/KS8sL14oPzpcXHtcXHsofik/XFwvKS8sL14oPzpcXHtcXHsofik/XFxeXFxzKih+KT9cXH1cXH0pLywvXig/Olxce1xceyh+KT9cXHMqZWxzZVxccyoofik/XFx9XFx9KS8sL14oPzpcXHtcXHsofik/XFxeKS8sL14oPzpcXHtcXHsofik/XFxzKmVsc2VcXGIpLywvXig/Olxce1xceyh+KT9cXHspLywvXig/Olxce1xceyh+KT8mKS8sL14oPzpcXHtcXHsofik/IS0tKS8sL14oPzpcXHtcXHsofik/IVtcXHNcXFNdKj9cXH1cXH0pLywvXig/Olxce1xceyh+KT9cXCo/KS8sL14oPzo9KS8sL14oPzpcXC5cXC4pLywvXig/OlxcLig/PShbPX59XFxzXFwvLilcXF18XSkpKS8sL14oPzpcXC4jKS8sL14oPzpbXFwvLl0pLywvXig/OlxccyspLywvXig/OlxcfSh+KT9cXH1cXH0pLywvXig/Oih+KT9cXH1cXH0pLywvXig/OlwiKFxcXFxbXCJdfFteXCJdKSpcIikvLC9eKD86JyhcXFxcWyddfFteJ10pKicpLywvXig/OkApLywvXig/OnRydWUoPz0oW359XFxzKVxcXV0pKSkvLC9eKD86ZmFsc2UoPz0oW359XFxzKVxcXV0pKSkvLC9eKD86dW5kZWZpbmVkKD89KFt+fVxccylcXF1dKSkpLywvXig/Om51bGwoPz0oW359XFxzKVxcXV0pKSkvLC9eKD86LT9bMC05XSsoPzpcXC5bMC05XSspPyg/PShbfn1cXHMpXFxdXSkpKS8sL14oPzphc1xccytcXHwpLywvXig/OlxcfCkvLC9eKD86KFteXFxzIVwiIyUtLFxcLlxcLzstPkBcXFstXFxeYFxcey1+XSsoPz0oWz1+fVxcc1xcLy4pXFxdfF0pKSkpLywvXig/OlxcWyhcXFxcXFxdfFteXFxdXSkqXFxdKS8sL14oPzouKS8sL14oPzokKS9dLFxuY29uZGl0aW9uczoge1wibXVcIjp7XCJydWxlc1wiOls3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0Niw0N10sXCJpbmNsdXNpdmVcIjpmYWxzZX0sXCJlbXVcIjp7XCJydWxlc1wiOlsyXSxcImluY2x1c2l2ZVwiOmZhbHNlfSxcImNvbVwiOntcInJ1bGVzXCI6WzZdLFwiaW5jbHVzaXZlXCI6ZmFsc2V9LFwicmF3XCI6e1wicnVsZXNcIjpbMyw0LDVdLFwiaW5jbHVzaXZlXCI6ZmFsc2V9LFwiZXNjbFwiOntcInJ1bGVzXCI6WzQ1XSxcImluY2x1c2l2ZVwiOmZhbHNlfSxcIklOSVRJQUxcIjp7XCJydWxlc1wiOlswLDEsNDddLFwiaW5jbHVzaXZlXCI6dHJ1ZX19XG59KTtcbnJldHVybiBsZXhlcjtcbn0pKCk7XG5wYXJzZXIubGV4ZXIgPSBsZXhlcjtcbmZ1bmN0aW9uIFBhcnNlciAoKSB7XG4gIHRoaXMueXkgPSB7fTtcbn1cblBhcnNlci5wcm90b3R5cGUgPSBwYXJzZXI7cGFyc2VyLlBhcnNlciA9IFBhcnNlcjtcbnJldHVybiBuZXcgUGFyc2VyO1xufSkoKTtleHBvcnQgZGVmYXVsdCBwYXJzZXI7XG4iXX0=","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n/* eslint-disable new-cap */\nimport Visitor from './visitor.js';\nexport function print(ast) {\n return new PrintVisitor().accept(ast);\n}\nexport function PrintVisitor() {\n this.padding = 0;\n}\nPrintVisitor.prototype = new Visitor();\nPrintVisitor.prototype.pad = function (string) {\n var out = '';\n for (var i = 0, l = this.padding; i < l; i++) {\n out += ' ';\n }\n out += string + '\\n';\n return out;\n};\nPrintVisitor.prototype.Program = function (program) {\n var out = '', body = program.body, i, l;\n if (program.blockParams) {\n var blockParams = 'BLOCK PARAMS: [';\n for (i = 0, l = program.blockParams.length; i < l; i++) {\n blockParams += ' ' + program.blockParams[i];\n }\n blockParams += ' ]';\n out += this.pad(blockParams);\n }\n for (i = 0, l = body.length; i < l; i++) {\n out += this.accept(body[i]);\n }\n this.padding--;\n return out;\n};\nPrintVisitor.prototype.MustacheStatement = function (mustache) {\n if (mustache.params.length > 0 || mustache.hash) {\n return this.pad('{{ ' + this.callBody(mustache) + ' }}');\n }\n else {\n return this.pad('{{ ' + this.accept(mustache.path) + ' }}');\n }\n};\nPrintVisitor.prototype.Decorator = function (mustache) {\n return this.pad('{{ DIRECTIVE ' + this.callBody(mustache) + ' }}');\n};\nPrintVisitor.prototype.BlockStatement = PrintVisitor.prototype.DecoratorBlock =\n function (block) {\n var out = '';\n out += this.pad((block.type === 'DecoratorBlock' ? 'DIRECTIVE ' : '') + 'BLOCK:');\n this.padding++;\n out += this.pad(this.callBody(block));\n if (block.program) {\n out += this.pad('PROGRAM:');\n this.padding++;\n out += this.accept(block.program);\n this.padding--;\n }\n if (block.inverse) {\n if (block.program) {\n this.padding++;\n }\n out += this.pad('{{^}}');\n this.padding++;\n out += this.accept(block.inverse);\n this.padding--;\n if (block.program) {\n this.padding--;\n }\n }\n this.padding--;\n return out;\n };\nPrintVisitor.prototype.PartialStatement = function (partial) {\n var content = 'PARTIAL:' + partial.name.original;\n if (partial.params[0]) {\n content += ' ' + this.accept(partial.params[0]);\n }\n if (partial.hash) {\n content += ' ' + this.accept(partial.hash);\n }\n return this.pad('{{> ' + content + ' }}');\n};\nPrintVisitor.prototype.PartialBlockStatement = function (partial) {\n var content = 'PARTIAL BLOCK:' + partial.name.original;\n if (partial.params[0]) {\n content += ' ' + this.accept(partial.params[0]);\n }\n if (partial.hash) {\n content += ' ' + this.accept(partial.hash);\n }\n content += ' ' + this.pad('PROGRAM:');\n this.padding++;\n content += this.accept(partial.program);\n this.padding--;\n return this.pad('{{> ' + content + ' }}');\n};\nPrintVisitor.prototype.ContentStatement = function (content) {\n return this.pad(\"CONTENT[ '\" + content.value + \"' ]\");\n};\nPrintVisitor.prototype.CommentStatement = function (comment) {\n return this.pad(\"{{! '\" + comment.value + \"' }}\");\n};\nPrintVisitor.prototype.SubExpression = function (sexpr) {\n return \"(\".concat(this.callBody(sexpr), \")\");\n};\nPrintVisitor.prototype.callBody = function (callExpr) {\n var params = callExpr.params, paramStrings = [], hash;\n for (var i = 0, l = params.length; i < l; i++) {\n paramStrings.push(this.accept(params[i]));\n }\n params =\n paramStrings.length === 0 ? '' : ' [' + paramStrings.join(', ') + ']';\n hash = callExpr.hash ? ' ' + this.accept(callExpr.hash) : '';\n return this.accept(callExpr.path) + params + hash;\n};\nPrintVisitor.prototype.PathExpression = function (id) {\n var head = typeof id.head === 'string' ? id.head : \"[\".concat(this.accept(id.head), \"]\");\n var path = __spreadArray([head], id.tail, true).join('/');\n return 'p%' + prefix(id) + path;\n};\nfunction prefix(path) {\n if (path.data) {\n return '@';\n }\n else if (path.this) {\n return 'this.';\n }\n else {\n return '';\n }\n}\nPrintVisitor.prototype.StringLiteral = function (string) {\n return '\"' + string.value + '\"';\n};\nPrintVisitor.prototype.NumberLiteral = function (number) {\n return 'n%' + number.value;\n};\nPrintVisitor.prototype.BooleanLiteral = function (bool) {\n return 'b%' + bool.value;\n};\nPrintVisitor.prototype.UndefinedLiteral = function () {\n return 'UNDEFINED';\n};\nPrintVisitor.prototype.NullLiteral = function () {\n return 'NULL';\n};\nPrintVisitor.prototype.ArrayLiteral = function (array) {\n var _this = this;\n return \"Array[\".concat(array.items.map(function (item) { return _this.accept(item); }).join(', '), \"]\");\n};\nPrintVisitor.prototype.HashLiteral = function (hash) {\n return \"Hash{\".concat(this.hashPairs(hash), \"}\");\n};\nPrintVisitor.prototype.Hash = function (hash) {\n return \"HASH{\".concat(this.hashPairs(hash), \"}\");\n};\nPrintVisitor.prototype.hashPairs = function (hash) {\n var pairs = hash.pairs, joinedPairs = [];\n for (var i = 0, l = pairs.length; i < l; i++) {\n joinedPairs.push(this.HashPair(pairs[i]));\n }\n return joinedPairs.join(' ');\n};\nPrintVisitor.prototype.HashPair = function (pair) {\n return pair.key + '=' + this.accept(pair.value);\n};\n/* eslint-enable new-cap */\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9wcmludGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDRCQUE0QjtBQUM1QixPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFbkMsTUFBTSxVQUFVLEtBQUssQ0FBQyxHQUFHO0lBQ3ZCLE9BQU8sSUFBSSxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZO0lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFFRCxZQUFZLENBQUMsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFFdkMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxNQUFNO0lBQzNDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUViLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3QyxHQUFHLElBQUksSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEdBQUcsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDO0FBRUYsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBVSxPQUFPO0lBQ2hELElBQUksR0FBRyxHQUFHLEVBQUUsRUFDVixJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksRUFDbkIsQ0FBQyxFQUNELENBQUMsQ0FBQztJQUVKLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hCLElBQUksV0FBVyxHQUFHLGlCQUFpQixDQUFDO1FBQ3BDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxD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LFVBQVUsSUFBSTtJQUNqRCxPQUFPLGVBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBRyxDQUFDO0FBQ3pDLENBQUMsQ0FBQztBQUVGLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsSUFBSTtJQUMxQyxPQUFPLGVBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBRyxDQUFDO0FBQ3pDLENBQUMsQ0FBQztBQUVGLFlBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsSUFBSTtJQUMvQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUNwQixXQUFXLEdBQUcsRUFBRSxDQUFDO0lBRW5CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3QyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQztBQUVGLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsSUFBSTtJQUM5QyxPQUFPLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FBQztBQUNGLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5ldy1jYXAgKi9cbmltcG9ydCBWaXNpdG9yIGZyb20gJy4vdmlzaXRvci5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludChhc3QpIHtcbiAgcmV0dXJuIG5ldyBQcmludFZpc2l0b3IoKS5hY2NlcHQoYXN0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFByaW50VmlzaXRvcigpIHtcbiAgdGhpcy5wYWRkaW5nID0gMDtcbn1cblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZSA9IG5ldyBWaXNpdG9yKCk7XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUucGFkID0gZnVuY3Rpb24gKHN0cmluZykge1xuICBsZXQgb3V0ID0gJyc7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aGlzLnBhZGRpbmc7IGkgPCBsOyBpKyspIHtcbiAgICBvdXQgKz0gJyAgJztcbiAgfVxuXG4gIG91dCArPSBzdHJpbmcgKyAnXFxuJztcbiAgcmV0dXJuIG91dDtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuUHJvZ3JhbSA9IGZ1bmN0aW9uIChwcm9ncmFtKSB7XG4gIGxldCBvdXQgPSAnJyxcbiAgICBib2R5ID0gcHJvZ3JhbS5ib2R5LFxuICAgIGksXG4gICAgbDtcblxuICBpZiAocHJvZ3JhbS5ibG9ja1BhcmFtcykge1xuICAgIGxldCBibG9ja1BhcmFtcyA9ICdCTE9DSyBQQVJBTVM6IFsnO1xuICAgIGZvciAoaSA9IDAsIGwgPSBwcm9ncmFtLmJsb2NrUGFyYW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgYmxvY2tQYXJhbXMgKz0gJyAnICsgcHJvZ3JhbS5ibG9ja1BhcmFtc1tpXTtcbiAgICB9XG4gICAgYmxvY2tQYXJhbXMgKz0gJyBdJztcbiAgICBvdXQgKz0gdGhpcy5wYWQoYmxvY2tQYXJhbXMpO1xuICB9XG5cbiAgZm9yIChpID0gMCwgbCA9IGJvZHkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgb3V0ICs9IHRoaXMuYWNjZXB0KGJvZHlbaV0pO1xuICB9XG5cbiAgdGhpcy5wYWRkaW5nLS07XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuTXVzdGFjaGVTdGF0ZW1lbnQgPSBmdW5jdGlvbiAobXVzdGFjaGUpIHtcbiAgaWYgKG11c3RhY2hlLnBhcmFtcy5sZW5ndGggPiAwIHx8IG11c3RhY2hlLmhhc2gpIHtcbiAgICByZXR1cm4gdGhpcy5wYWQoJ3t7ICcgKyB0aGlzLmNhbGxCb2R5KG11c3RhY2hlKSArICcgfX0nKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGhpcy5wYWQoJ3t7ICcgKyB0aGlzLmFjY2VwdChtdXN0YWNoZS5wYXRoKSArICcgfX0nKTtcbiAgfVxufTtcblByaW50VmlzaXRvci5wcm90b3R5cGUuRGVjb3JhdG9yID0gZnVuY3Rpb24gKG11c3RhY2hlKSB7XG4gIHJldHVybiB0aGlzLnBhZCgne3sgRElSRUNUSVZFICcgKyB0aGlzLmNhbGxCb2R5KG11c3RhY2hlKSArICcgfX0nKTtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQgPSBQcmludFZpc2l0b3IucHJvdG90eXBlLkRlY29yYXRvckJsb2NrID1cbiAgZnVuY3Rpb24gKGJsb2NrKSB7XG4gICAgbGV0IG91dCA9ICcnO1xuXG4gICAgb3V0ICs9IHRoaXMucGFkKFxuICAgICAgKGJsb2NrLnR5cGUgPT09ICdEZWNvcmF0b3JCbG9jaycgPyAnRElSRUNUSVZFICcgOiAnJykgKyAnQkxPQ0s6J1xuICAgICk7XG4gICAgdGhpcy5wYWRkaW5nKys7XG4gICAgb3V0ICs9IHRoaXMucGFkKHRoaXMuY2FsbEJvZHkoYmxvY2spKTtcbiAgICBpZiAoYmxvY2sucHJvZ3JhbSkge1xuICAgICAgb3V0ICs9IHRoaXMucGFkKCdQUk9HUkFNOicpO1xuICAgICAgdGhpcy5wYWRkaW5nKys7XG4gICAgICBvdXQgKz0gdGhpcy5hY2NlcHQoYmxvY2sucHJvZ3JhbSk7XG4gICAgICB0aGlzLnBhZGRpbmctLTtcbiAgICB9XG4gICAgaWYgKGJsb2NrLmludmVyc2UpIHtcbiAgICAgIGlmIChibG9jay5wcm9ncmFtKSB7XG4gICAgICAgIHRoaXMucGFkZGluZysrO1xuICAgICAgfVxuICAgICAgb3V0ICs9IHRoaXMucGFkKCd7e159fScpO1xuICAgICAgdGhpcy5wYWRkaW5nKys7XG4gICAgICBvdXQgKz0gdGhpcy5hY2NlcHQoYmxvY2suaW52ZXJzZSk7XG4gICAgICB0aGlzLnBhZGRpbmctLTtcbiAgICAgIGlmIChibG9jay5wcm9ncmFtKSB7XG4gICAgICAgIHRoaXMucGFkZGluZy0tO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBhZGRpbmctLTtcblxuICAgIHJldHVybiBvdXQ7XG4gIH07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuUGFydGlhbFN0YXRlbWVudCA9IGZ1bmN0aW9uIChwYXJ0aWFsKSB7XG4gIGxldCBjb250ZW50ID0gJ1BBUlRJQUw6JyArIHBhcnRpYWwubmFtZS5vcmlnaW5hbDtcbiAgaWYgKHBhcnRpYWwucGFyYW1zWzBdKSB7XG4gICAgY29udGVudCArPSAnICcgKyB0aGlzLmFjY2VwdChwYXJ0aWFsLnBhcmFtc1swXSk7XG4gIH1cbiAgaWYgKHBhcnRpYWwuaGFzaCkge1xuICAgIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5hY2NlcHQocGFydGlhbC5oYXNoKTtcbiAgfVxuICByZXR1cm4gdGhpcy5wYWQoJ3t7PiAnICsgY29udGVudCArICcgfX0nKTtcbn07XG5QcmludFZpc2l0b3IucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudCA9IGZ1bmN0aW9uIChwYXJ0aWFsKSB7XG4gIGxldCBjb250ZW50ID0gJ1BBUlRJQUwgQkxPQ0s6JyArIHBhcnRpYWwubmFtZS5vcmlnaW5hbDtcbiAgaWYgKHBhcnRpYWwucGFyYW1zWzBdKSB7XG4gICAgY29udGVudCArPSAnICcgKyB0aGlzLmFjY2VwdChwYXJ0aWFsLnBhcmFtc1swXSk7XG4gIH1cbiAgaWYgKHBhcnRpYWwuaGFzaCkge1xuICAgIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5hY2NlcHQocGFydGlhbC5oYXNoKTtcbiAgfVxuXG4gIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5wYWQoJ1BST0dSQU06Jyk7XG4gIHRoaXMucGFkZGluZysrO1xuICBjb250ZW50ICs9IHRoaXMuYWNjZXB0KHBhcnRpYWwucHJvZ3JhbSk7XG4gIHRoaXMucGFkZGluZy0tO1xuXG4gIHJldHVybiB0aGlzLnBhZCgne3s+ICcgKyBjb250ZW50ICsgJyB9fScpO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Db250ZW50U3RhdGVtZW50ID0gZnVuY3Rpb24gKGNvbnRlbnQpIHtcbiAgcmV0dXJuIHRoaXMucGFkKFwiQ09OVEVOVFsgJ1wiICsgY29udGVudC52YWx1ZSArIFwiJyBdXCIpO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50ID0gZnVuY3Rpb24gKGNvbW1lbnQpIHtcbiAgcmV0dXJuIHRoaXMucGFkKFwie3shICdcIiArIGNvbW1lbnQudmFsdWUgKyBcIicgfX1cIik7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLlN1YkV4cHJlc3Npb24gPSBmdW5jdGlvbiAoc2V4cHIpIHtcbiAgcmV0dXJuIGAoJHt0aGlzLmNhbGxCb2R5KHNleHByKX0pYDtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuY2FsbEJvZHkgPSBmdW5jdGlvbiAoY2FsbEV4cHIpIHtcbiAgbGV0IHBhcmFtcyA9IGNhbGxFeHByLnBhcmFtcyxcbiAgICBwYXJhbVN0cmluZ3MgPSBbXSxcbiAgICBoYXNoO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gcGFyYW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHBhcmFtU3RyaW5ncy5wdXNoKHRoaXMuYWNjZXB0KHBhcmFtc1tpXSkpO1xuICB9XG5cbiAgcGFyYW1zID1cbiAgICBwYXJhbVN0cmluZ3MubGVuZ3RoID09PSAwID8gJycgOiAnIFsnICsgcGFyYW1TdHJpbmdzLmpvaW4oJywgJykgKyAnXSc7XG5cbiAgaGFzaCA9IGNhbGxFeHByLmhhc2ggPyAnICcgKyB0aGlzLmFjY2VwdChjYWxsRXhwci5oYXNoKSA6ICcnO1xuXG4gIHJldHVybiB0aGlzLmFjY2VwdChjYWxsRXhwci5wYXRoKSArIHBhcmFtcyArIGhhc2g7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLlBhdGhFeHByZXNzaW9uID0gZnVuY3Rpb24gKGlkKSB7XG4gIGxldCBoZWFkID1cbiAgICB0eXBlb2YgaWQuaGVhZCA9PT0gJ3N0cmluZycgPyBpZC5oZWFkIDogYFske3RoaXMuYWNjZXB0KGlkLmhlYWQpfV1gO1xuICBsZXQgcGF0aCA9IFtoZWFkLCAuLi5pZC50YWlsXS5qb2luKCcvJyk7XG4gIHJldHVybiAncCUnICsgcHJlZml4KGlkKSArIHBhdGg7XG59O1xuXG5mdW5jdGlvbiBwcmVmaXgocGF0aCkge1xuICBpZiAocGF0aC5kYXRhKSB7XG4gICAgcmV0dXJuICdAJztcbiAgfSBlbHNlIGlmIChwYXRoLnRoaXMpIHtcbiAgICByZXR1cm4gJ3RoaXMuJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5TdHJpbmdMaXRlcmFsID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gJ1wiJyArIHN0cmluZy52YWx1ZSArICdcIic7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLk51bWJlckxpdGVyYWwgPSBmdW5jdGlvbiAobnVtYmVyKSB7XG4gIHJldHVybiAnbiUnICsgbnVtYmVyLnZhbHVlO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Cb29sZWFuTGl0ZXJhbCA9IGZ1bmN0aW9uIChib29sKSB7XG4gIHJldHVybiAnYiUnICsgYm9vbC52YWx1ZTtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuVW5kZWZpbmVkTGl0ZXJhbCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdVTkRFRklORUQnO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5OdWxsTGl0ZXJhbCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdOVUxMJztcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuQXJyYXlMaXRlcmFsID0gZnVuY3Rpb24gKGFycmF5KSB7XG4gIHJldHVybiBgQXJyYXlbJHthcnJheS5pdGVtcy5tYXAoKGl0ZW0pID0+IHRoaXMuYWNjZXB0KGl0ZW0pKS5qb2luKCcsICcpfV1gO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5IYXNoTGl0ZXJhbCA9IGZ1bmN0aW9uIChoYXNoKSB7XG4gIHJldHVybiBgSGFzaHske3RoaXMuaGFzaFBhaXJzKGhhc2gpfX1gO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5IYXNoID0gZnVuY3Rpb24gKGhhc2gpIHtcbiAgcmV0dXJuIGBIQVNIeyR7dGhpcy5oYXNoUGFpcnMoaGFzaCl9fWA7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLmhhc2hQYWlycyA9IGZ1bmN0aW9uIChoYXNoKSB7XG4gIGxldCBwYWlycyA9IGhhc2gucGFpcnMsXG4gICAgam9pbmVkUGFpcnMgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMCwgbCA9IHBhaXJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGpvaW5lZFBhaXJzLnB1c2godGhpcy5IYXNoUGFpcihwYWlyc1tpXSkpO1xuICB9XG5cbiAgcmV0dXJuIGpvaW5lZFBhaXJzLmpvaW4oJyAnKTtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuSGFzaFBhaXIgPSBmdW5jdGlvbiAocGFpcikge1xuICByZXR1cm4gcGFpci5rZXkgKyAnPScgKyB0aGlzLmFjY2VwdChwYWlyLnZhbHVlKTtcbn07XG4vKiBlc2xpbnQtZW5hYmxlIG5ldy1jYXAgKi9cbiJdfQ==","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport Exception from './exception.js';\nfunction validateClose(open, close) {\n close = close.path ? close.path.original : close;\n if (open.path.original !== close) {\n var errorNode = { loc: open.path.loc };\n throw new Exception(open.path.original + \" doesn't match \" + close, errorNode);\n }\n}\nexport function SourceLocation(source, locInfo) {\n this.source = source;\n this.start = {\n line: locInfo.first_line,\n column: locInfo.first_column,\n };\n this.end = {\n line: locInfo.last_line,\n column: locInfo.last_column,\n };\n}\nexport function id(token) {\n if (/^\\[.*\\]$/.test(token)) {\n return token.substring(1, token.length - 1);\n }\n else {\n return token;\n }\n}\nexport function stripFlags(open, close) {\n return {\n open: open.charAt(2) === '~',\n close: close.charAt(close.length - 3) === '~',\n };\n}\nexport function stripComment(comment) {\n return comment.replace(/^\\{\\{~?!-?-?/, '').replace(/-?-?~?\\}\\}$/, '');\n}\nexport function preparePath(data, sexpr, parts, loc) {\n loc = this.locInfo(loc);\n var original;\n if (data) {\n original = '@';\n }\n else if (sexpr) {\n original = sexpr.original + '.';\n }\n else {\n original = '';\n }\n var tail = [];\n var depth = 0;\n for (var i = 0, l = parts.length; i < l; i++) {\n var part = parts[i].part;\n // If we have [] syntax then we do not treat path references as operators,\n // i.e. foo.[this] resolves to approximately context.foo['this']\n var isLiteral = parts[i].original !== part;\n var separator = parts[i].separator;\n var partPrefix = separator === '.#' ? '#' : '';\n original += (separator || '') + part;\n if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {\n if (tail.length > 0) {\n throw new Exception('Invalid path: ' + original, { loc: loc });\n }\n else if (part === '..') {\n depth++;\n }\n }\n else {\n tail.push(\"\".concat(partPrefix).concat(part));\n }\n }\n var head = sexpr || tail.shift();\n return {\n type: 'PathExpression',\n this: original.startsWith('this.'),\n data: data,\n depth: depth,\n head: head,\n tail: tail,\n parts: head ? __spreadArray([head], tail, true) : tail,\n original: original,\n loc: loc,\n };\n}\nexport function prepareMustache(path, params, hash, open, strip, locInfo) {\n // Must use charAt to support IE pre-10\n var escapeFlag = open.charAt(3) || open.charAt(2), escaped = escapeFlag !== '{' && escapeFlag !== '&';\n var decorator = /\\*/.test(open);\n return {\n type: decorator ? 'Decorator' : 'MustacheStatement',\n path: path,\n params: params,\n hash: hash,\n escaped: escaped,\n strip: strip,\n loc: this.locInfo(locInfo),\n };\n}\nexport function prepareRawBlock(openRawBlock, contents, close, locInfo) {\n validateClose(openRawBlock, close);\n locInfo = this.locInfo(locInfo);\n var program = {\n type: 'Program',\n body: contents,\n strip: {},\n loc: locInfo,\n };\n return {\n type: 'BlockStatement',\n path: openRawBlock.path,\n params: openRawBlock.params,\n hash: openRawBlock.hash,\n program: program,\n openStrip: {},\n inverseStrip: {},\n closeStrip: {},\n loc: locInfo,\n };\n}\nexport function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) {\n if (close && close.path) {\n validateClose(openBlock, close);\n }\n var decorator = /\\*/.test(openBlock.open);\n program.blockParams = openBlock.blockParams;\n var inverse, inverseStrip;\n if (inverseAndProgram) {\n if (decorator) {\n throw new Exception('Unexpected inverse block on decorator', inverseAndProgram);\n }\n if (inverseAndProgram.chain) {\n inverseAndProgram.program.body[0].closeStrip = close.strip;\n }\n inverseStrip = inverseAndProgram.strip;\n inverse = inverseAndProgram.program;\n }\n if (inverted) {\n inverted = inverse;\n inverse = program;\n program = inverted;\n }\n return {\n type: decorator ? 'DecoratorBlock' : 'BlockStatement',\n path: openBlock.path,\n params: openBlock.params,\n hash: openBlock.hash,\n program: program,\n inverse: inverse,\n openStrip: openBlock.strip,\n inverseStrip: inverseStrip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo),\n };\n}\nexport function prepareProgram(statements, loc) {\n if (!loc && statements.length) {\n var firstLoc = statements[0].loc, lastLoc = statements[statements.length - 1].loc;\n /* istanbul ignore else */\n if (firstLoc && lastLoc) {\n loc = {\n source: firstLoc.source,\n start: {\n line: firstLoc.start.line,\n column: firstLoc.start.column,\n },\n end: {\n line: lastLoc.end.line,\n column: lastLoc.end.column,\n },\n };\n }\n }\n return {\n type: 'Program',\n body: statements,\n strip: {},\n loc: loc,\n };\n}\nexport function preparePartialBlock(open, program, close, locInfo) {\n validateClose(open, close);\n return {\n type: 'PartialBlockStatement',\n name: open.path,\n params: open.params,\n hash: open.hash,\n program: program,\n openStrip: open.strip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo),\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oZWxwZXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sU0FBUyxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLFNBQVMsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLO0lBQ2hDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBRWpELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDakMsSUFBSSxTQUFTLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUV2QyxNQUFNLElBQUksU0FBUyxDQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsR0FBRyxLQUFLLEVBQzlDLFNBQVMsQ0FDVixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQU0sRUFBRSxPQUFPO0lBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUc7UUFDWCxJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVU7UUFDeEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxZQUFZO0tBQzdCLENBQUM7SUFDRixJQUFJLENBQUMsR0FBRyxHQUFHO1FBQ1QsSUFBSSxFQUFFLE9BQU8sQ0FBQyxTQUFTO1FBQ3ZCLE1BQU0sRUFBRSxPQUFPLENBQUMsV0FBVztLQUM1QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxFQUFFLENBQUMsS0FBSztJQUN0QixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPLEtBQUss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QUFDLElBQUk7b0JBQ3pCLE1BQU0sRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU07aUJBQzlCO2dCQUNELEdBQUcsRUFBRTtvQkFDSCxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJO29CQUN0QixNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNO2lCQUMzQjthQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLEVBQUUsU0FBUztRQUNmLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxFQUFFO1FBQ1QsR0FBRyxFQUFFLEdBQUc7S0FDVCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPO0lBQy9ELGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFM0IsT0FBTztRQUNMLElBQUksRUFBRSx1QkFBdUI7UUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1FBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLE9BQU8sU0FBQTtRQUNQLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSztRQUNyQixVQUFVLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLO1FBQ2hDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztLQUMzQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24uanMnO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZUNsb3NlKG9wZW4sIGNsb3NlKSB7XG4gIGNsb3NlID0gY2xvc2UucGF0aCA/IGNsb3NlLnBhdGgub3JpZ2luYWwgOiBjbG9zZTtcblxuICBpZiAob3Blbi5wYXRoLm9yaWdpbmFsICE9PSBjbG9zZSkge1xuICAgIGxldCBlcnJvck5vZGUgPSB7IGxvYzogb3Blbi5wYXRoLmxvYyB9O1xuXG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgIG9wZW4ucGF0aC5vcmlnaW5hbCArIFwiIGRvZXNuJ3QgbWF0Y2ggXCIgKyBjbG9zZSxcbiAgICAgIGVycm9yTm9kZVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNvdXJjZUxvY2F0aW9uKHNvdXJjZSwgbG9jSW5mbykge1xuICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgdGhpcy5zdGFydCA9IHtcbiAgICBsaW5lOiBsb2NJbmZvLmZpcnN0X2xpbmUsXG4gICAgY29sdW1uOiBsb2NJbmZvLmZpcnN0X2NvbHVtbixcbiAgfTtcbiAgdGhpcy5lbmQgPSB7XG4gICAgbGluZTogbG9jSW5mby5sYXN0X2xpbmUsXG4gICAgY29sdW1uOiBsb2NJbmZvLmxhc3RfY29sdW1uLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWQodG9rZW4pIHtcbiAgaWYgKC9eXFxbLipcXF0kLy50ZXN0KHRva2VuKSkge1xuICAgIHJldHVybiB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4ubGVuZ3RoIC0gMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEZsYWdzKG9wZW4sIGNsb3NlKSB7XG4gIHJldHVybiB7XG4gICAgb3Blbjogb3Blbi5jaGFyQXQoMikgPT09ICd+JyxcbiAgICBjbG9zZTogY2xvc2UuY2hhckF0KGNsb3NlLmxlbmd0aCAtIDMpID09PSAnficsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcENvbW1lbnQoY29tbWVudCkge1xuICByZXR1cm4gY29tbWVudC5yZXBsYWNlKC9eXFx7XFx7fj8hLT8tPy8sICcnKS5yZXBsYWNlKC8tPy0/fj9cXH1cXH0kLywgJycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVBhdGgoZGF0YSwgc2V4cHIsIHBhcnRzLCBsb2MpIHtcbiAgbG9jID0gdGhpcy5sb2NJbmZvKGxvYyk7XG5cbiAgbGV0IG9yaWdpbmFsO1xuXG4gIGlmIChkYXRhKSB7XG4gICAgb3JpZ2luYWwgPSAnQCc7XG4gIH0gZWxzZSBpZiAoc2V4cHIpIHtcbiAgICBvcmlnaW5hbCA9IHNleHByLm9yaWdpbmFsICsgJy4nO1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsID0gJyc7XG4gIH1cblxuICBsZXQgdGFpbCA9IFtdO1xuICBsZXQgZGVwdGggPSAwO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgbGV0IHBhcnQgPSBwYXJ0c1tpXS5wYXJ0O1xuICAgIC8vIElmIHdlIGhhdmUgW10gc3ludGF4IHRoZW4gd2UgZG8gbm90IHRyZWF0IHBhdGggcmVmZXJlbmNlcyBhcyBvcGVyYXRvcnMsXG4gICAgLy8gaS5lLiBmb28uW3RoaXNdIHJlc29sdmVzIHRvIGFwcHJveGltYXRlbHkgY29udGV4dC5mb29bJ3RoaXMnXVxuICAgIGxldCBpc0xpdGVyYWwgPSBwYXJ0c1tpXS5vcmlnaW5hbCAhPT0gcGFydDtcbiAgICBsZXQgc2VwYXJhdG9yID0gcGFydHNbaV0uc2VwYXJhdG9yO1xuXG4gICAgbGV0IHBhcnRQcmVmaXggPSBzZXBhcmF0b3IgPT09ICcuIycgPyAnIycgOiAnJztcblxuICAgIG9yaWdpbmFsICs9IChzZXBhcmF0b3IgfHwgJycpICsgcGFydDtcblxuICAgIGlmICghaXNMaXRlcmFsICYmIChwYXJ0ID09PSAnLi4nIHx8IHBhcnQgPT09ICcuJyB8fCBwYXJ0ID09PSAndGhpcycpKSB7XG4gICAgICBpZiAodGFpbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0ludmFsaWQgcGF0aDogJyArIG9yaWdpbmFsLCB7IGxvYyB9KTtcbiAgICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgICBkZXB0aCsrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0YWlsLnB1c2goYCR7cGFydFByZWZpeH0ke3BhcnR9YCk7XG4gICAgfVxuICB9XG5cbiAgbGV0IGhlYWQgPSBzZXhwciB8fCB0YWlsLnNoaWZ0KCk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLFxuICAgIHRoaXM6IG9yaWdpbmFsLnN0YXJ0c1dpdGgoJ3RoaXMuJyksXG4gICAgZGF0YSxcbiAgICBkZXB0aCxcbiAgICBoZWFkLFxuICAgIHRhaWwsXG4gICAgcGFydHM6IGhlYWQgPyBbaGVhZCwgLi4udGFpbF0gOiB0YWlsLFxuICAgIG9yaWdpbmFsLFxuICAgIGxvYyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVNdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gsIG9wZW4sIHN0cmlwLCBsb2NJbmZvKSB7XG4gIC8vIE11c3QgdXNlIGNoYXJBdCB0byBzdXBwb3J0IElFIHByZS0xMFxuICBsZXQgZXNjYXBlRmxhZyA9IG9wZW4uY2hhckF0KDMpIHx8IG9wZW4uY2hhckF0KDIpLFxuICAgIGVzY2FwZWQgPSBlc2NhcGVGbGFnICE9PSAneycgJiYgZXNjYXBlRmxhZyAhPT0gJyYnO1xuXG4gIGxldCBkZWNvcmF0b3IgPSAvXFwqLy50ZXN0KG9wZW4pO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGRlY29yYXRvciA/ICdEZWNvcmF0b3InIDogJ011c3RhY2hlU3RhdGVtZW50JyxcbiAgICBwYXRoLFxuICAgIHBhcmFtcyxcbiAgICBoYXNoLFxuICAgIGVzY2FwZWQsXG4gICAgc3RyaXAsXG4gICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbyksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlUmF3QmxvY2sob3BlblJhd0Jsb2NrLCBjb250ZW50cywgY2xvc2UsIGxvY0luZm8pIHtcbiAgdmFsaWRhdGVDbG9zZShvcGVuUmF3QmxvY2ssIGNsb3NlKTtcblxuICBsb2NJbmZvID0gdGhpcy5sb2NJbmZvKGxvY0luZm8pO1xuICBsZXQgcHJvZ3JhbSA9IHtcbiAgICB0eXBlOiAnUHJvZ3JhbScsXG4gICAgYm9keTogY29udGVudHMsXG4gICAgc3RyaXA6IHt9LFxuICAgIGxvYzogbG9jSW5mbyxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdCbG9ja1N0YXRlbWVudCcsXG4gICAgcGF0aDogb3BlblJhd0Jsb2NrLnBhdGgsXG4gICAgcGFyYW1zOiBvcGVuUmF3QmxvY2sucGFyYW1zLFxuICAgIGhhc2g6IG9wZW5SYXdCbG9jay5oYXNoLFxuICAgIHByb2dyYW0sXG4gICAgb3BlblN0cmlwOiB7fSxcbiAgICBpbnZlcnNlU3RyaXA6IHt9LFxuICAgIGNsb3NlU3RyaXA6IHt9LFxuICAgIGxvYzogbG9jSW5mbyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVCbG9jayhcbiAgb3BlbkJsb2NrLFxuICBwcm9ncmFtLFxuICBpbnZlcnNlQW5kUHJvZ3JhbSxcbiAgY2xvc2UsXG4gIGludmVydGVkLFxuICBsb2NJbmZvXG4pIHtcbiAgaWYgKGNsb3NlICYmIGNsb3NlLnBhdGgpIHtcbiAgICB2YWxpZGF0ZUNsb3NlKG9wZW5CbG9jaywgY2xvc2UpO1xuICB9XG5cbiAgbGV0IGRlY29yYXRvciA9IC9cXCovLnRlc3Qob3BlbkJsb2NrLm9wZW4pO1xuXG4gIHByb2dyYW0uYmxvY2tQYXJhbXMgPSBvcGVuQmxvY2suYmxvY2tQYXJhbXM7XG5cbiAgbGV0IGludmVyc2UsIGludmVyc2VTdHJpcDtcblxuICBpZiAoaW52ZXJzZUFuZFByb2dyYW0pIHtcbiAgICBpZiAoZGVjb3JhdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgICAnVW5leHBlY3RlZCBpbnZlcnNlIGJsb2NrIG9uIGRlY29yYXRvcicsXG4gICAgICAgIGludmVyc2VBbmRQcm9ncmFtXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChpbnZlcnNlQW5kUHJvZ3JhbS5jaGFpbikge1xuICAgICAgaW52ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbS5ib2R5WzBdLmNsb3NlU3RyaXAgPSBjbG9zZS5zdHJpcDtcbiAgICB9XG5cbiAgICBpbnZlcnNlU3RyaXAgPSBpbnZlcnNlQW5kUHJvZ3JhbS5zdHJpcDtcbiAgICBpbnZlcnNlID0gaW52ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbTtcbiAgfVxuXG4gIGlmIChpbnZlcnRlZCkge1xuICAgIGludmVydGVkID0gaW52ZXJzZTtcbiAgICBpbnZlcnNlID0gcHJvZ3JhbTtcbiAgICBwcm9ncmFtID0gaW52ZXJ0ZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHR5cGU6IGRlY29yYXRvciA/ICdEZWNvcmF0b3JCbG9jaycgOiAnQmxvY2tTdGF0ZW1lbnQnLFxuICAgIHBhdGg6IG9wZW5CbG9jay5wYXRoLFxuICAgIHBhcmFtczogb3BlbkJsb2NrLnBhcmFtcyxcbiAgICBoYXNoOiBvcGVuQmxvY2suaGFzaCxcbiAgICBwcm9ncmFtLFxuICAgIGludmVyc2UsXG4gICAgb3BlblN0cmlwOiBvcGVuQmxvY2suc3RyaXAsXG4gICAgaW52ZXJzZVN0cmlwLFxuICAgIGNsb3NlU3RyaXA6IGNsb3NlICYmIGNsb3NlLnN0cmlwLFxuICAgIGxvYzogdGhpcy5sb2NJbmZvKGxvY0luZm8pLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZVByb2dyYW0oc3RhdGVtZW50cywgbG9jKSB7XG4gIGlmICghbG9jICYmIHN0YXRlbWVudHMubGVuZ3RoKSB7XG4gICAgY29uc3QgZmlyc3RMb2MgPSBzdGF0ZW1lbnRzWzBdLmxvYyxcbiAgICAgIGxhc3RMb2MgPSBzdGF0ZW1lbnRzW3N0YXRlbWVudHMubGVuZ3RoIC0gMV0ubG9jO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZmlyc3RMb2MgJiYgbGFzdExvYykge1xuICAgICAgbG9jID0ge1xuICAgICAgICBzb3VyY2U6IGZpcnN0TG9jLnNvdXJjZSxcbiAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICBsaW5lOiBmaXJzdExvYy5zdGFydC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogZmlyc3RMb2Muc3RhcnQuY29sdW1uLFxuICAgICAgICB9LFxuICAgICAgICBlbmQ6IHtcbiAgICAgICAgICBsaW5lOiBsYXN0TG9jLmVuZC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogbGFzdExvYy5lbmQuY29sdW1uLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdQcm9ncmFtJyxcbiAgICBib2R5OiBzdGF0ZW1lbnRzLFxuICAgIHN0cmlwOiB7fSxcbiAgICBsb2M6IGxvYyxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVQYXJ0aWFsQmxvY2sob3BlbiwgcHJvZ3JhbSwgY2xvc2UsIGxvY0luZm8pIHtcbiAgdmFsaWRhdGVDbG9zZShvcGVuLCBjbG9zZSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnUGFydGlhbEJsb2NrU3RhdGVtZW50JyxcbiAgICBuYW1lOiBvcGVuLnBhdGgsXG4gICAgcGFyYW1zOiBvcGVuLnBhcmFtcyxcbiAgICBoYXNoOiBvcGVuLmhhc2gsXG4gICAgcHJvZ3JhbSxcbiAgICBvcGVuU3RyaXA6IG9wZW4uc3RyaXAsXG4gICAgY2xvc2VTdHJpcDogY2xvc2UgJiYgY2xvc2Uuc3RyaXAsXG4gICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbyksXG4gIH07XG59XG4iXX0=","import parser from './parser.js';\nimport WhitespaceControl from './whitespace-control.js';\nimport * as Helpers from './helpers.js';\nvar baseHelpers = {};\nfor (var helper in Helpers) {\n if (Object.prototype.hasOwnProperty.call(Helpers, helper)) {\n baseHelpers[helper] = Helpers[helper];\n }\n}\nexport function parseWithoutProcessing(input, options) {\n var _a, _b, _c;\n // Just return if an already-compiled AST was passed in.\n if (input.type === 'Program') {\n return input;\n }\n parser.yy = baseHelpers;\n // Altering the shared object here, but this is ok as parser is a sync operation\n parser.yy.locInfo = function (locInfo) {\n return new Helpers.SourceLocation(options && options.srcName, locInfo);\n };\n var squareSyntax;\n if (typeof ((_a = options === null || options === void 0 ? void 0 : options.syntax) === null || _a === void 0 ? void 0 : _a.square) === 'function') {\n squareSyntax = options.syntax.square;\n }\n else if (((_b = options === null || options === void 0 ? void 0 : options.syntax) === null || _b === void 0 ? void 0 : _b.square) === 'node') {\n squareSyntax = arrayLiteralNode;\n }\n else {\n squareSyntax = 'string';\n }\n var hashSyntax;\n if (typeof ((_c = options === null || options === void 0 ? void 0 : options.syntax) === null || _c === void 0 ? void 0 : _c.hash) === 'function') {\n hashSyntax = options.syntax.hash;\n }\n else {\n hashSyntax = hashLiteralNode;\n }\n parser.yy.syntax = {\n square: squareSyntax,\n hash: hashSyntax,\n };\n return parser.parse(input);\n}\nfunction arrayLiteralNode(array, loc) {\n return {\n type: 'ArrayLiteral',\n items: array,\n loc: loc,\n };\n}\nfunction hashLiteralNode(hash, loc) {\n return {\n type: 'HashLiteral',\n pairs: hash.pairs,\n loc: loc,\n };\n}\nexport function parse(input, options) {\n var ast = parseWithoutProcessing(input, options);\n var strip = new WhitespaceControl(options);\n return strip.accept(ast);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvcGFyc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8saUJBQWlCLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFeEMsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBRXJCLEtBQUssSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7SUFDM0IsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUQsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsT0FBTzs7SUFDbkQsd0RBQXdEO0lBQ3hELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM3QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBRSxHQUFHLFdBQVcsQ0FBQztJQUV4QixnRkFBZ0Y7SUFDaEYsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUcsVUFBVSxPQUFPO1FBQ25DLE9BQU8sSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUMsQ0FBQztJQUVGLElBQUksWUFBWSxDQUFDO0lBRWpCLElBQUksT0FBTyxDQUFBLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sMENBQUUsTUFBTSxDQUFBLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDbEQsWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3ZDLENBQUM7U0FBTSxJQUFJLENBQUEsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSwwQ0FBRSxNQUFNLE1BQUssTUFBTSxFQUFFLENBQUM7UUFDOUMsWUFBWSxHQUFHLGdCQUFnQixDQUFDO0lBQ2xDLENBQUM7U0FBTSxDQUFDO1FBQ04sWUFBWSxHQUFHLFFBQVEsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUM7SUFFZixJQUFJLE9BQU8sQ0FBQSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLDBDQUFFLElBQUksQ0FBQSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ2hELFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNuQyxDQUFDO1NBQU0sQ0FBQztRQUNOLFVBQVUsR0FBRyxlQUFlLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHO1FBQ2pCLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLElBQUksRUFBRSxVQUFVO0tBQ2pCLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEdBQUc7SUFDbEMsT0FBTztRQUNMLElBQUksRUFBRSxjQUFjO1FBQ3BCLEtBQUssRUFBRSxLQUFLO1FBQ1osR0FBRyxLQUFBO0tBQ0osQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRztJQUNoQyxPQUFPO1FBQ0wsSUFBSSxFQUFFLGFBQWE7UUFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLEdBQUcsS0FBQTtLQUNKLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTztJQUNsQyxJQUFJLEdBQUcsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsSUFBSSxLQUFLLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUzQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXJzZXIgZnJvbSAnLi9wYXJzZXIuanMnO1xuaW1wb3J0IFdoaXRlc3BhY2VDb250cm9sIGZyb20gJy4vd2hpdGVzcGFjZS1jb250cm9sLmpzJztcbmltcG9ydCAqIGFzIEhlbHBlcnMgZnJvbSAnLi9oZWxwZXJzLmpzJztcblxubGV0IGJhc2VIZWxwZXJzID0ge307XG5cbmZvciAobGV0IGhlbHBlciBpbiBIZWxwZXJzKSB7XG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoSGVscGVycywgaGVscGVyKSkge1xuICAgIGJhc2VIZWxwZXJzW2hlbHBlcl0gPSBIZWxwZXJzW2hlbHBlcl07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlV2l0aG91dFByb2Nlc3NpbmcoaW5wdXQsIG9wdGlvbnMpIHtcbiAgLy8gSnVzdCByZXR1cm4gaWYgYW4gYWxyZWFkeS1jb21waWxlZCBBU1Qgd2FzIHBhc3NlZCBpbi5cbiAgaWYgKGlucHV0LnR5cGUgPT09ICdQcm9ncmFtJykge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuXG4gIHBhcnNlci55eSA9IGJhc2VIZWxwZXJzO1xuXG4gIC8vIEFsdGVyaW5nIHRoZSBzaGFyZWQgb2JqZWN0IGhlcmUsIGJ1dCB0aGlzIGlzIG9rIGFzIHBhcnNlciBpcyBhIHN5bmMgb3BlcmF0aW9uXG4gIHBhcnNlci55eS5sb2NJbmZvID0gZnVuY3Rpb24gKGxvY0luZm8pIHtcbiAgICByZXR1cm4gbmV3IEhlbHBlcnMuU291cmNlTG9jYXRpb24ob3B0aW9ucyAmJiBvcHRpb25zLnNyY05hbWUsIGxvY0luZm8pO1xuICB9O1xuXG4gIGxldCBzcXVhcmVTeW50YXg7XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zPy5zeW50YXg/LnNxdWFyZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHNxdWFyZVN5bnRheCA9IG9wdGlvbnMuc3ludGF4LnNxdWFyZTtcbiAgfSBlbHNlIGlmIChvcHRpb25zPy5zeW50YXg/LnNxdWFyZSA9PT0gJ25vZGUnKSB7XG4gICAgc3F1YXJlU3ludGF4ID0gYXJyYXlMaXRlcmFsTm9kZTtcbiAgfSBlbHNlIHtcbiAgICBzcXVhcmVTeW50YXggPSAnc3RyaW5nJztcbiAgfVxuXG4gIGxldCBoYXNoU3ludGF4O1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucz8uc3ludGF4Py5oYXNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaGFzaFN5bnRheCA9IG9wdGlvbnMuc3ludGF4Lmhhc2g7XG4gIH0gZWxzZSB7XG4gICAgaGFzaFN5bnRheCA9IGhhc2hMaXRlcmFsTm9kZTtcbiAgfVxuXG4gIHBhcnNlci55eS5zeW50YXggPSB7XG4gICAgc3F1YXJlOiBzcXVhcmVTeW50YXgsXG4gICAgaGFzaDogaGFzaFN5bnRheCxcbiAgfTtcblxuICByZXR1cm4gcGFyc2VyLnBhcnNlKGlucHV0KTtcbn1cblxuZnVuY3Rpb24gYXJyYXlMaXRlcmFsTm9kZShhcnJheSwgbG9jKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0FycmF5TGl0ZXJhbCcsXG4gICAgaXRlbXM6IGFycmF5LFxuICAgIGxvYyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaGFzaExpdGVyYWxOb2RlKGhhc2gsIGxvYykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdIYXNoTGl0ZXJhbCcsXG4gICAgcGFpcnM6IGhhc2gucGFpcnMsXG4gICAgbG9jLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UoaW5wdXQsIG9wdGlvbnMpIHtcbiAgbGV0IGFzdCA9IHBhcnNlV2l0aG91dFByb2Nlc3NpbmcoaW5wdXQsIG9wdGlvbnMpO1xuICBsZXQgc3RyaXAgPSBuZXcgV2hpdGVzcGFjZUNvbnRyb2wob3B0aW9ucyk7XG5cbiAgcmV0dXJuIHN0cmlwLmFjY2VwdChhc3QpO1xufVxuIl19","/**\n * generated from https://raw.githubusercontent.com/w3c/html/26b5126f96f736f796b9e29718138919dd513744/entities.json\n * do not edit\n */\nvar namedCharRefs = {\n Aacute: \"Á\", aacute: \"á\", Abreve: \"Ă\", abreve: \"ă\", ac: \"∾\", acd: \"∿\", acE: \"∾̳\", Acirc: \"Â\", acirc: \"â\", acute: \"´\", Acy: \"А\", acy: \"а\", AElig: \"Æ\", aelig: \"æ\", af: \"\\u2061\", Afr: \"𝔄\", afr: \"𝔞\", Agrave: \"À\", agrave: \"à\", alefsym: \"ℵ\", aleph: \"ℵ\", Alpha: \"Α\", alpha: \"α\", Amacr: \"Ā\", amacr: \"ā\", amalg: \"⨿\", amp: \"&\", AMP: \"&\", andand: \"⩕\", And: \"⩓\", and: \"∧\", andd: \"⩜\", andslope: \"⩘\", andv: \"⩚\", ang: \"∠\", ange: \"⦤\", angle: \"∠\", angmsdaa: \"⦨\", angmsdab: \"⦩\", angmsdac: \"⦪\", angmsdad: \"⦫\", angmsdae: \"⦬\", angmsdaf: \"⦭\", angmsdag: \"⦮\", angmsdah: \"⦯\", angmsd: \"∡\", angrt: \"∟\", angrtvb: \"⊾\", angrtvbd: \"⦝\", angsph: \"∢\", angst: \"Å\", angzarr: \"⍼\", Aogon: \"Ą\", aogon: \"ą\", Aopf: \"𝔸\", aopf: \"𝕒\", apacir: \"⩯\", ap: \"≈\", apE: \"⩰\", ape: \"≊\", apid: \"≋\", apos: \"'\", ApplyFunction: \"\\u2061\", approx: \"≈\", approxeq: \"≊\", Aring: \"Å\", aring: \"å\", Ascr: \"𝒜\", ascr: \"𝒶\", Assign: \"≔\", ast: \"*\", asymp: \"≈\", asympeq: \"≍\", Atilde: \"Ã\", atilde: \"ã\", Auml: \"Ä\", auml: \"ä\", awconint: \"∳\", awint: \"⨑\", backcong: \"≌\", backepsilon: \"϶\", backprime: \"‵\", backsim: \"∽\", backsimeq: \"⋍\", Backslash: \"∖\", Barv: \"⫧\", barvee: \"⊽\", barwed: \"⌅\", Barwed: \"⌆\", barwedge: \"⌅\", bbrk: \"⎵\", bbrktbrk: \"⎶\", bcong: \"≌\", Bcy: \"Б\", bcy: \"б\", bdquo: \"„\", becaus: \"∵\", because: \"∵\", Because: \"∵\", bemptyv: \"⦰\", bepsi: \"϶\", bernou: \"ℬ\", Bernoullis: \"ℬ\", Beta: \"Β\", beta: \"β\", beth: \"ℶ\", between: \"≬\", Bfr: \"𝔅\", bfr: \"𝔟\", bigcap: \"⋂\", bigcirc: \"◯\", bigcup: \"⋃\", bigodot: \"⨀\", bigoplus: \"⨁\", bigotimes: \"⨂\", bigsqcup: \"⨆\", bigstar: \"★\", bigtriangledown: \"▽\", bigtriangleup: \"△\", biguplus: \"⨄\", bigvee: \"⋁\", bigwedge: \"⋀\", bkarow: \"⤍\", blacklozenge: \"⧫\", blacksquare: \"▪\", blacktriangle: \"▴\", blacktriangledown: \"▾\", blacktriangleleft: \"◂\", blacktriangleright: \"▸\", blank: \"␣\", blk12: \"▒\", blk14: \"░\", blk34: \"▓\", block: \"█\", bne: \"=⃥\", bnequiv: \"≡⃥\", bNot: \"⫭\", bnot: \"⌐\", Bopf: \"𝔹\", bopf: \"𝕓\", bot: \"⊥\", bottom: \"⊥\", bowtie: \"⋈\", boxbox: \"⧉\", boxdl: \"┐\", boxdL: \"╕\", boxDl: \"╖\", boxDL: \"╗\", boxdr: \"┌\", boxdR: \"╒\", boxDr: \"╓\", boxDR: \"╔\", boxh: \"─\", boxH: \"═\", boxhd: \"┬\", boxHd: \"╤\", boxhD: \"╥\", boxHD: \"╦\", boxhu: \"┴\", boxHu: \"╧\", boxhU: \"╨\", boxHU: \"╩\", boxminus: \"⊟\", boxplus: \"⊞\", boxtimes: \"⊠\", boxul: \"┘\", boxuL: \"╛\", boxUl: \"╜\", boxUL: \"╝\", boxur: \"└\", boxuR: \"╘\", boxUr: \"╙\", boxUR: \"╚\", boxv: \"│\", boxV: \"║\", boxvh: \"┼\", boxvH: \"╪\", boxVh: \"╫\", boxVH: \"╬\", boxvl: \"┤\", boxvL: \"╡\", boxVl: \"╢\", boxVL: \"╣\", boxvr: \"├\", boxvR: \"╞\", boxVr: \"╟\", boxVR: \"╠\", bprime: \"‵\", breve: \"˘\", Breve: \"˘\", brvbar: \"¦\", bscr: \"𝒷\", Bscr: \"ℬ\", bsemi: \"⁏\", bsim: \"∽\", bsime: \"⋍\", bsolb: \"⧅\", bsol: \"\\\\\", bsolhsub: \"⟈\", bull: \"•\", bullet: \"•\", bump: \"≎\", bumpE: \"⪮\", bumpe: \"≏\", Bumpeq: \"≎\", bumpeq: \"≏\", Cacute: \"Ć\", cacute: \"ć\", capand: \"⩄\", capbrcup: \"⩉\", capcap: \"⩋\", cap: \"∩\", Cap: \"⋒\", capcup: \"⩇\", capdot: \"⩀\", CapitalDifferentialD: \"ⅅ\", caps: \"∩︀\", caret: \"⁁\", caron: \"ˇ\", Cayleys: \"ℭ\", ccaps: \"⩍\", Ccaron: \"Č\", ccaron: \"č\", Ccedil: \"Ç\", ccedil: \"ç\", Ccirc: \"Ĉ\", ccirc: \"ĉ\", Cconint: \"∰\", ccups: \"⩌\", ccupssm: \"⩐\", Cdot: \"Ċ\", cdot: \"ċ\", cedil: \"¸\", Cedilla: \"¸\", cemptyv: \"⦲\", cent: \"¢\", centerdot: \"·\", CenterDot: \"·\", cfr: \"𝔠\", Cfr: \"ℭ\", CHcy: \"Ч\", chcy: \"ч\", check: \"✓\", checkmark: \"✓\", Chi: \"Χ\", chi: \"χ\", circ: \"ˆ\", circeq: \"≗\", circlearrowleft: \"↺\", circlearrowright: \"↻\", circledast: \"⊛\", circledcirc: \"⊚\", circleddash: \"⊝\", CircleDot: \"⊙\", circledR: \"®\", circledS: \"Ⓢ\", CircleMinus: \"⊖\", CirclePlus: \"⊕\", CircleTimes: \"⊗\", cir: \"○\", cirE: \"⧃\", cire: \"≗\", cirfnint: \"⨐\", cirmid: \"⫯\", cirscir: \"⧂\", ClockwiseContourIntegral: \"∲\", CloseCurlyDoubleQuote: \"”\", CloseCurlyQuote: \"’\", clubs: \"♣\", clubsuit: \"♣\", colon: \":\", Colon: \"∷\", Colone: \"⩴\", colone: \"≔\", coloneq: \"≔\", comma: \",\", commat: \"@\", comp: \"∁\", compfn: \"∘\", complement: \"∁\", complexes: \"ℂ\", cong: \"≅\", congdot: \"⩭\", Congruent: \"≡\", conint: \"∮\", Conint: \"∯\", ContourIntegral: \"∮\", copf: \"𝕔\", Copf: \"ℂ\", coprod: \"∐\", Coproduct: \"∐\", copy: \"©\", COPY: \"©\", copysr: \"℗\", CounterClockwiseContourIntegral: \"∳\", crarr: \"↵\", cross: \"✗\", Cross: \"⨯\", Cscr: \"𝒞\", cscr: \"𝒸\", csub: \"⫏\", csube: \"⫑\", csup: \"⫐\", csupe: \"⫒\", ctdot: \"⋯\", cudarrl: \"⤸\", cudarrr: \"⤵\", cuepr: \"⋞\", cuesc: \"⋟\", cularr: \"↶\", cularrp: \"⤽\", cupbrcap: \"⩈\", cupcap: \"⩆\", CupCap: \"≍\", cup: \"∪\", Cup: \"⋓\", cupcup: \"⩊\", cupdot: \"⊍\", cupor: \"⩅\", cups: \"∪︀\", curarr: \"↷\", curarrm: \"⤼\", curlyeqprec: \"⋞\", curlyeqsucc: \"⋟\", curlyvee: \"⋎\", curlywedge: \"⋏\", curren: \"¤\", curvearrowleft: \"↶\", curvearrowright: \"↷\", cuvee: \"⋎\", cuwed: \"⋏\", cwconint: \"∲\", cwint: \"∱\", cylcty: \"⌭\", dagger: \"†\", Dagger: \"‡\", daleth: \"ℸ\", darr: \"↓\", Darr: \"↡\", dArr: \"⇓\", dash: \"‐\", Dashv: \"⫤\", dashv: \"⊣\", dbkarow: \"⤏\", dblac: \"˝\", Dcaron: \"Ď\", dcaron: \"ď\", Dcy: \"Д\", dcy: \"д\", ddagger: \"‡\", ddarr: \"⇊\", DD: \"ⅅ\", dd: \"ⅆ\", DDotrahd: \"⤑\", ddotseq: \"⩷\", deg: \"°\", Del: \"∇\", Delta: \"Δ\", delta: \"δ\", demptyv: \"⦱\", dfisht: \"⥿\", Dfr: \"𝔇\", dfr: \"𝔡\", dHar: \"⥥\", dharl: \"⇃\", dharr: \"⇂\", DiacriticalAcute: \"´\", DiacriticalDot: \"˙\", DiacriticalDoubleAcute: \"˝\", DiacriticalGrave: \"`\", DiacriticalTilde: \"˜\", diam: \"⋄\", diamond: \"⋄\", Diamond: \"⋄\", diamondsuit: \"♦\", diams: \"♦\", die: \"¨\", DifferentialD: \"ⅆ\", digamma: \"ϝ\", disin: \"⋲\", div: \"÷\", divide: \"÷\", divideontimes: \"⋇\", divonx: \"⋇\", DJcy: \"Ђ\", djcy: \"ђ\", dlcorn: \"⌞\", dlcrop: \"⌍\", dollar: \"$\", Dopf: \"𝔻\", dopf: \"𝕕\", Dot: \"¨\", dot: \"˙\", DotDot: \"⃜\", doteq: \"≐\", doteqdot: \"≑\", DotEqual: \"≐\", dotminus: \"∸\", dotplus: \"∔\", dotsquare: \"⊡\", doublebarwedge: \"⌆\", DoubleContourIntegral: \"∯\", DoubleDot: \"¨\", DoubleDownArrow: \"⇓\", DoubleLeftArrow: \"⇐\", DoubleLeftRightArrow: \"⇔\", DoubleLeftTee: \"⫤\", DoubleLongLeftArrow: \"⟸\", DoubleLongLeftRightArrow: \"⟺\", DoubleLongRightArrow: \"⟹\", DoubleRightArrow: \"⇒\", DoubleRightTee: \"⊨\", DoubleUpArrow: \"⇑\", DoubleUpDownArrow: \"⇕\", DoubleVerticalBar: \"∥\", DownArrowBar: \"⤓\", downarrow: \"↓\", DownArrow: \"↓\", Downarrow: \"⇓\", DownArrowUpArrow: \"⇵\", DownBreve: \"̑\", downdownarrows: \"⇊\", downharpoonleft: \"⇃\", downharpoonright: \"⇂\", DownLeftRightVector: \"⥐\", DownLeftTeeVector: \"⥞\", DownLeftVectorBar: \"⥖\", DownLeftVector: \"↽\", DownRightTeeVector: \"⥟\", DownRightVectorBar: \"⥗\", DownRightVector: \"⇁\", DownTeeArrow: \"↧\", DownTee: \"⊤\", drbkarow: \"⤐\", drcorn: \"⌟\", drcrop: \"⌌\", Dscr: \"𝒟\", dscr: \"𝒹\", DScy: \"Ѕ\", dscy: \"ѕ\", dsol: \"⧶\", Dstrok: \"Đ\", dstrok: \"đ\", dtdot: \"⋱\", dtri: \"▿\", dtrif: \"▾\", duarr: \"⇵\", duhar: \"⥯\", dwangle: \"⦦\", DZcy: \"Џ\", dzcy: \"џ\", dzigrarr: \"⟿\", Eacute: \"É\", eacute: \"é\", easter: \"⩮\", Ecaron: \"Ě\", ecaron: \"ě\", Ecirc: \"Ê\", ecirc: \"ê\", ecir: \"≖\", ecolon: \"≕\", Ecy: \"Э\", ecy: \"э\", eDDot: \"⩷\", Edot: \"Ė\", edot: \"ė\", eDot: \"≑\", ee: \"ⅇ\", efDot: \"≒\", Efr: \"𝔈\", efr: \"𝔢\", eg: \"⪚\", Egrave: \"È\", egrave: \"è\", egs: \"⪖\", egsdot: \"⪘\", el: \"⪙\", Element: \"∈\", elinters: \"⏧\", ell: \"ℓ\", els: \"⪕\", elsdot: \"⪗\", Emacr: \"Ē\", emacr: \"ē\", empty: \"∅\", emptyset: \"∅\", EmptySmallSquare: \"◻\", emptyv: \"∅\", EmptyVerySmallSquare: \"▫\", emsp13: \" \", emsp14: \" \", emsp: \" \", ENG: \"Ŋ\", eng: \"ŋ\", ensp: \" \", Eogon: \"Ę\", eogon: \"ę\", Eopf: \"𝔼\", eopf: \"𝕖\", epar: \"⋕\", eparsl: \"⧣\", eplus: \"⩱\", epsi: \"ε\", Epsilon: \"Ε\", epsilon: \"ε\", epsiv: \"ϵ\", eqcirc: \"≖\", eqcolon: \"≕\", eqsim: \"≂\", eqslantgtr: \"⪖\", eqslantless: \"⪕\", Equal: \"⩵\", equals: \"=\", EqualTilde: \"≂\", equest: \"≟\", Equilibrium: \"⇌\", equiv: \"≡\", equivDD: \"⩸\", eqvparsl: \"⧥\", erarr: \"⥱\", erDot: \"≓\", escr: \"ℯ\", Escr: \"ℰ\", esdot: \"≐\", Esim: \"⩳\", esim: \"≂\", Eta: \"Η\", eta: \"η\", ETH: \"Ð\", eth: \"ð\", Euml: \"Ë\", euml: \"ë\", euro: \"€\", excl: \"!\", exist: \"∃\", Exists: \"∃\", expectation: \"ℰ\", exponentiale: \"ⅇ\", ExponentialE: \"ⅇ\", fallingdotseq: \"≒\", Fcy: \"Ф\", fcy: \"ф\", female: \"♀\", ffilig: \"ffi\", fflig: \"ff\", ffllig: \"ffl\", Ffr: \"𝔉\", ffr: \"𝔣\", filig: \"fi\", FilledSmallSquare: \"◼\", FilledVerySmallSquare: \"▪\", fjlig: \"fj\", flat: \"♭\", fllig: \"fl\", fltns: \"▱\", fnof: \"ƒ\", Fopf: \"𝔽\", fopf: \"𝕗\", forall: \"∀\", ForAll: \"∀\", fork: \"⋔\", forkv: \"⫙\", Fouriertrf: \"ℱ\", fpartint: \"⨍\", frac12: \"½\", frac13: \"⅓\", frac14: \"¼\", frac15: \"⅕\", frac16: \"⅙\", frac18: \"⅛\", frac23: \"⅔\", frac25: \"⅖\", frac34: \"¾\", frac35: \"⅗\", frac38: \"⅜\", frac45: \"⅘\", frac56: \"⅚\", frac58: \"⅝\", frac78: \"⅞\", frasl: \"⁄\", frown: \"⌢\", fscr: \"𝒻\", Fscr: \"ℱ\", gacute: \"ǵ\", Gamma: \"Γ\", gamma: \"γ\", Gammad: \"Ϝ\", gammad: \"ϝ\", gap: \"⪆\", Gbreve: \"Ğ\", gbreve: \"ğ\", Gcedil: \"Ģ\", Gcirc: \"Ĝ\", gcirc: \"ĝ\", Gcy: \"Г\", gcy: \"г\", Gdot: \"Ġ\", gdot: \"ġ\", ge: \"≥\", gE: \"≧\", gEl: \"⪌\", gel: \"⋛\", geq: \"≥\", geqq: \"≧\", geqslant: \"⩾\", gescc: \"⪩\", ges: \"⩾\", gesdot: \"⪀\", gesdoto: \"⪂\", gesdotol: \"⪄\", gesl: \"⋛︀\", gesles: \"⪔\", Gfr: \"𝔊\", gfr: \"𝔤\", gg: \"≫\", Gg: \"⋙\", ggg: \"⋙\", gimel: \"ℷ\", GJcy: \"Ѓ\", gjcy: \"ѓ\", gla: \"⪥\", gl: \"≷\", glE: \"⪒\", glj: \"⪤\", gnap: \"⪊\", gnapprox: \"⪊\", gne: \"⪈\", gnE: \"≩\", gneq: \"⪈\", gneqq: \"≩\", gnsim: \"⋧\", Gopf: \"𝔾\", gopf: \"𝕘\", grave: \"`\", GreaterEqual: \"≥\", GreaterEqualLess: \"⋛\", GreaterFullEqual: \"≧\", GreaterGreater: \"⪢\", GreaterLess: \"≷\", GreaterSlantEqual: \"⩾\", GreaterTilde: \"≳\", Gscr: \"𝒢\", gscr: \"ℊ\", gsim: \"≳\", gsime: \"⪎\", gsiml: \"⪐\", gtcc: \"⪧\", gtcir: \"⩺\", gt: \">\", GT: \">\", Gt: \"≫\", gtdot: \"⋗\", gtlPar: \"⦕\", gtquest: \"⩼\", gtrapprox: \"⪆\", gtrarr: \"⥸\", gtrdot: \"⋗\", gtreqless: \"⋛\", gtreqqless: \"⪌\", gtrless: \"≷\", gtrsim: \"≳\", gvertneqq: \"≩︀\", gvnE: \"≩︀\", Hacek: \"ˇ\", hairsp: \" \", half: \"½\", hamilt: \"ℋ\", HARDcy: \"Ъ\", hardcy: \"ъ\", harrcir: \"⥈\", harr: \"↔\", hArr: \"⇔\", harrw: \"↭\", Hat: \"^\", hbar: \"ℏ\", Hcirc: \"Ĥ\", hcirc: \"ĥ\", hearts: \"♥\", heartsuit: \"♥\", hellip: \"…\", hercon: \"⊹\", hfr: \"𝔥\", Hfr: \"ℌ\", HilbertSpace: \"ℋ\", hksearow: \"⤥\", hkswarow: \"⤦\", hoarr: \"⇿\", homtht: \"∻\", hookleftarrow: \"↩\", hookrightarrow: \"↪\", hopf: \"𝕙\", Hopf: \"ℍ\", horbar: \"―\", HorizontalLine: \"─\", hscr: \"𝒽\", Hscr: \"ℋ\", hslash: \"ℏ\", Hstrok: \"Ħ\", hstrok: \"ħ\", HumpDownHump: \"≎\", HumpEqual: \"≏\", hybull: \"⁃\", hyphen: \"‐\", Iacute: \"Í\", iacute: \"í\", ic: \"\\u2063\", Icirc: \"Î\", icirc: \"î\", Icy: \"И\", icy: \"и\", Idot: \"İ\", IEcy: \"Е\", iecy: \"е\", iexcl: \"¡\", iff: \"⇔\", ifr: \"𝔦\", Ifr: \"ℑ\", Igrave: \"Ì\", igrave: \"ì\", ii: \"ⅈ\", iiiint: \"⨌\", iiint: \"∭\", iinfin: \"⧜\", iiota: \"℩\", IJlig: \"IJ\", ijlig: \"ij\", Imacr: \"Ī\", imacr: \"ī\", image: \"ℑ\", ImaginaryI: \"ⅈ\", imagline: \"ℐ\", imagpart: \"ℑ\", imath: \"ı\", Im: \"ℑ\", imof: \"⊷\", imped: \"Ƶ\", Implies: \"⇒\", incare: \"℅\", in: \"∈\", infin: \"∞\", infintie: \"⧝\", inodot: \"ı\", intcal: \"⊺\", int: \"∫\", Int: \"∬\", integers: \"ℤ\", Integral: \"∫\", intercal: \"⊺\", Intersection: \"⋂\", intlarhk: \"⨗\", intprod: \"⨼\", InvisibleComma: \"\\u2063\", InvisibleTimes: \"\\u2062\", IOcy: \"Ё\", iocy: \"ё\", Iogon: \"Į\", iogon: \"į\", Iopf: \"𝕀\", iopf: \"𝕚\", Iota: \"Ι\", iota: \"ι\", iprod: \"⨼\", iquest: \"¿\", iscr: \"𝒾\", Iscr: \"ℐ\", isin: \"∈\", isindot: \"⋵\", isinE: \"⋹\", isins: \"⋴\", isinsv: \"⋳\", isinv: \"∈\", it: \"\\u2062\", Itilde: \"Ĩ\", itilde: \"ĩ\", Iukcy: \"І\", iukcy: \"і\", Iuml: \"Ï\", iuml: \"ï\", Jcirc: \"Ĵ\", jcirc: \"ĵ\", Jcy: \"Й\", jcy: \"й\", Jfr: \"𝔍\", jfr: \"𝔧\", jmath: \"ȷ\", Jopf: \"𝕁\", jopf: \"𝕛\", Jscr: \"𝒥\", jscr: \"𝒿\", Jsercy: \"Ј\", jsercy: \"ј\", Jukcy: \"Є\", jukcy: \"є\", Kappa: \"Κ\", kappa: \"κ\", kappav: \"ϰ\", Kcedil: \"Ķ\", kcedil: \"ķ\", Kcy: \"К\", kcy: \"к\", Kfr: \"𝔎\", kfr: \"𝔨\", kgreen: \"ĸ\", KHcy: \"Х\", khcy: \"х\", KJcy: \"Ќ\", kjcy: \"ќ\", Kopf: \"𝕂\", kopf: \"𝕜\", Kscr: \"𝒦\", kscr: \"𝓀\", lAarr: \"⇚\", Lacute: \"Ĺ\", lacute: \"ĺ\", laemptyv: \"⦴\", lagran: \"ℒ\", Lambda: \"Λ\", lambda: \"λ\", lang: \"⟨\", Lang: \"⟪\", langd: \"⦑\", langle: \"⟨\", lap: \"⪅\", Laplacetrf: \"ℒ\", laquo: \"«\", larrb: \"⇤\", larrbfs: \"⤟\", larr: \"←\", Larr: \"↞\", lArr: \"⇐\", larrfs: \"⤝\", larrhk: \"↩\", larrlp: \"↫\", larrpl: \"⤹\", larrsim: \"⥳\", larrtl: \"↢\", latail: \"⤙\", lAtail: \"⤛\", lat: \"⪫\", late: \"⪭\", lates: \"⪭︀\", lbarr: \"⤌\", lBarr: \"⤎\", lbbrk: \"❲\", lbrace: \"{\", lbrack: \"[\", lbrke: \"⦋\", lbrksld: \"⦏\", lbrkslu: \"⦍\", Lcaron: \"Ľ\", lcaron: \"ľ\", Lcedil: \"Ļ\", lcedil: \"ļ\", lceil: \"⌈\", lcub: \"{\", Lcy: \"Л\", lcy: \"л\", ldca: \"⤶\", ldquo: \"“\", ldquor: \"„\", ldrdhar: \"⥧\", ldrushar: \"⥋\", ldsh: \"↲\", le: \"≤\", lE: \"≦\", LeftAngleBracket: \"⟨\", LeftArrowBar: \"⇤\", leftarrow: \"←\", LeftArrow: \"←\", Leftarrow: \"⇐\", LeftArrowRightArrow: \"⇆\", leftarrowtail: \"↢\", LeftCeiling: \"⌈\", LeftDoubleBracket: \"⟦\", LeftDownTeeVector: \"⥡\", LeftDownVectorBar: \"⥙\", LeftDownVector: \"⇃\", LeftFloor: \"⌊\", leftharpoondown: \"↽\", leftharpoonup: \"↼\", leftleftarrows: \"⇇\", leftrightarrow: \"↔\", LeftRightArrow: \"↔\", Leftrightarrow: \"⇔\", leftrightarrows: \"⇆\", leftrightharpoons: \"⇋\", leftrightsquigarrow: \"↭\", LeftRightVector: \"⥎\", LeftTeeArrow: \"↤\", LeftTee: \"⊣\", LeftTeeVector: \"⥚\", leftthreetimes: \"⋋\", LeftTriangleBar: \"⧏\", LeftTriangle: \"⊲\", LeftTriangleEqual: \"⊴\", LeftUpDownVector: \"⥑\", LeftUpTeeVector: \"⥠\", LeftUpVectorBar: \"⥘\", LeftUpVector: \"↿\", LeftVectorBar: \"⥒\", LeftVector: \"↼\", lEg: \"⪋\", leg: \"⋚\", leq: \"≤\", leqq: \"≦\", leqslant: \"⩽\", lescc: \"⪨\", les: \"⩽\", lesdot: \"⩿\", lesdoto: \"⪁\", lesdotor: \"⪃\", lesg: \"⋚︀\", lesges: \"⪓\", lessapprox: \"⪅\", lessdot: \"⋖\", lesseqgtr: \"⋚\", lesseqqgtr: \"⪋\", LessEqualGreater: \"⋚\", LessFullEqual: \"≦\", LessGreater: \"≶\", lessgtr: \"≶\", LessLess: \"⪡\", lesssim: \"≲\", LessSlantEqual: \"⩽\", LessTilde: \"≲\", lfisht: \"⥼\", lfloor: \"⌊\", Lfr: \"𝔏\", lfr: \"𝔩\", lg: \"≶\", lgE: \"⪑\", lHar: \"⥢\", lhard: \"↽\", lharu: \"↼\", lharul: \"⥪\", lhblk: \"▄\", LJcy: \"Љ\", ljcy: \"љ\", llarr: \"⇇\", ll: \"≪\", Ll: \"⋘\", llcorner: \"⌞\", Lleftarrow: \"⇚\", llhard: \"⥫\", lltri: \"◺\", Lmidot: \"Ŀ\", lmidot: \"ŀ\", lmoustache: \"⎰\", lmoust: \"⎰\", lnap: \"⪉\", lnapprox: \"⪉\", lne: \"⪇\", lnE: \"≨\", lneq: \"⪇\", lneqq: \"≨\", lnsim: \"⋦\", loang: \"⟬\", loarr: \"⇽\", lobrk: \"⟦\", longleftarrow: \"⟵\", LongLeftArrow: \"⟵\", Longleftarrow: \"⟸\", longleftrightarrow: \"⟷\", LongLeftRightArrow: \"⟷\", Longleftrightarrow: \"⟺\", longmapsto: \"⟼\", longrightarrow: \"⟶\", LongRightArrow: \"⟶\", Longrightarrow: \"⟹\", looparrowleft: \"↫\", looparrowright: \"↬\", lopar: \"⦅\", Lopf: \"𝕃\", lopf: \"𝕝\", loplus: \"⨭\", lotimes: \"⨴\", lowast: \"∗\", lowbar: \"_\", LowerLeftArrow: \"↙\", LowerRightArrow: \"↘\", loz: \"◊\", lozenge: \"◊\", lozf: \"⧫\", lpar: \"(\", lparlt: \"⦓\", lrarr: \"⇆\", lrcorner: \"⌟\", lrhar: \"⇋\", lrhard: \"⥭\", lrm: \"\\u200e\", lrtri: \"⊿\", lsaquo: \"‹\", lscr: \"𝓁\", Lscr: \"ℒ\", lsh: \"↰\", Lsh: \"↰\", lsim: \"≲\", lsime: \"⪍\", lsimg: \"⪏\", lsqb: \"[\", lsquo: \"‘\", lsquor: \"‚\", Lstrok: \"Ł\", lstrok: \"ł\", ltcc: \"⪦\", ltcir: \"⩹\", lt: \"<\", LT: \"<\", Lt: \"≪\", ltdot: \"⋖\", lthree: \"⋋\", ltimes: \"⋉\", ltlarr: \"⥶\", ltquest: \"⩻\", ltri: \"◃\", ltrie: \"⊴\", ltrif: \"◂\", ltrPar: \"⦖\", lurdshar: \"⥊\", luruhar: \"⥦\", lvertneqq: \"≨︀\", lvnE: \"≨︀\", macr: \"¯\", male: \"♂\", malt: \"✠\", maltese: \"✠\", Map: \"⤅\", map: \"↦\", mapsto: \"↦\", mapstodown: \"↧\", mapstoleft: \"↤\", mapstoup: \"↥\", marker: \"▮\", mcomma: \"⨩\", Mcy: \"М\", mcy: \"м\", mdash: \"—\", mDDot: \"∺\", measuredangle: \"∡\", MediumSpace: \" \", Mellintrf: \"ℳ\", Mfr: \"𝔐\", mfr: \"𝔪\", mho: \"℧\", micro: \"µ\", midast: \"*\", midcir: \"⫰\", mid: \"∣\", middot: \"·\", minusb: \"⊟\", minus: \"−\", minusd: \"∸\", minusdu: \"⨪\", MinusPlus: \"∓\", mlcp: \"⫛\", mldr: \"…\", mnplus: \"∓\", models: \"⊧\", Mopf: \"𝕄\", mopf: \"𝕞\", mp: \"∓\", mscr: \"𝓂\", Mscr: \"ℳ\", mstpos: \"∾\", Mu: \"Μ\", mu: \"μ\", multimap: \"⊸\", mumap: \"⊸\", nabla: \"∇\", Nacute: \"Ń\", nacute: \"ń\", nang: \"∠⃒\", nap: \"≉\", napE: \"⩰̸\", napid: \"≋̸\", napos: \"ʼn\", napprox: \"≉\", natural: \"♮\", naturals: \"ℕ\", natur: \"♮\", nbsp: \" \", nbump: \"≎̸\", nbumpe: \"≏̸\", ncap: \"⩃\", Ncaron: \"Ň\", ncaron: \"ň\", Ncedil: \"Ņ\", ncedil: \"ņ\", ncong: \"≇\", ncongdot: \"⩭̸\", ncup: \"⩂\", Ncy: \"Н\", ncy: \"н\", ndash: \"–\", nearhk: \"⤤\", nearr: \"↗\", neArr: \"⇗\", nearrow: \"↗\", ne: \"≠\", nedot: \"≐̸\", NegativeMediumSpace: \"\", NegativeThickSpace: \"\", NegativeThinSpace: \"\", NegativeVeryThinSpace: \"\", nequiv: \"≢\", nesear: \"⤨\", nesim: \"≂̸\", NestedGreaterGreater: \"≫\", NestedLessLess: \"≪\", NewLine: \"\\u000a\", nexist: \"∄\", nexists: \"∄\", Nfr: \"𝔑\", nfr: \"𝔫\", ngE: \"≧̸\", nge: \"≱\", ngeq: \"≱\", ngeqq: \"≧̸\", ngeqslant: \"⩾̸\", nges: \"⩾̸\", nGg: \"⋙̸\", ngsim: \"≵\", nGt: \"≫⃒\", ngt: \"≯\", ngtr: \"≯\", nGtv: \"≫̸\", nharr: \"↮\", nhArr: \"⇎\", nhpar: \"⫲\", ni: \"∋\", nis: \"⋼\", nisd: \"⋺\", niv: \"∋\", NJcy: \"Њ\", njcy: \"њ\", nlarr: \"↚\", nlArr: \"⇍\", nldr: \"‥\", nlE: \"≦̸\", nle: \"≰\", nleftarrow: \"↚\", nLeftarrow: \"⇍\", nleftrightarrow: \"↮\", nLeftrightarrow: \"⇎\", nleq: \"≰\", nleqq: \"≦̸\", nleqslant: \"⩽̸\", nles: \"⩽̸\", nless: \"≮\", nLl: \"⋘̸\", nlsim: \"≴\", nLt: \"≪⃒\", nlt: \"≮\", nltri: \"⋪\", nltrie: \"⋬\", nLtv: \"≪̸\", nmid: \"∤\", NoBreak: \"\\u2060\", NonBreakingSpace: \" \", nopf: \"𝕟\", Nopf: \"ℕ\", Not: \"⫬\", not: \"¬\", NotCongruent: \"≢\", NotCupCap: \"≭\", NotDoubleVerticalBar: \"∦\", NotElement: \"∉\", NotEqual: \"≠\", NotEqualTilde: \"≂̸\", NotExists: \"∄\", NotGreater: \"≯\", NotGreaterEqual: \"≱\", NotGreaterFullEqual: \"≧̸\", NotGreaterGreater: \"≫̸\", NotGreaterLess: \"≹\", NotGreaterSlantEqual: \"⩾̸\", NotGreaterTilde: \"≵\", NotHumpDownHump: \"≎̸\", NotHumpEqual: \"≏̸\", notin: \"∉\", notindot: \"⋵̸\", notinE: \"⋹̸\", notinva: \"∉\", notinvb: \"⋷\", notinvc: \"⋶\", NotLeftTriangleBar: \"⧏̸\", NotLeftTriangle: \"⋪\", NotLeftTriangleEqual: \"⋬\", NotLess: \"≮\", NotLessEqual: \"≰\", NotLessGreater: \"≸\", NotLessLess: \"≪̸\", NotLessSlantEqual: \"⩽̸\", NotLessTilde: \"≴\", NotNestedGreaterGreater: \"⪢̸\", NotNestedLessLess: \"⪡̸\", notni: \"∌\", notniva: \"∌\", notnivb: \"⋾\", notnivc: \"⋽\", NotPrecedes: \"⊀\", NotPrecedesEqual: \"⪯̸\", NotPrecedesSlantEqual: \"⋠\", NotReverseElement: \"∌\", NotRightTriangleBar: \"⧐̸\", NotRightTriangle: \"⋫\", NotRightTriangleEqual: \"⋭\", NotSquareSubset: \"⊏̸\", NotSquareSubsetEqual: \"⋢\", NotSquareSuperset: \"⊐̸\", NotSquareSupersetEqual: \"⋣\", NotSubset: \"⊂⃒\", NotSubsetEqual: \"⊈\", NotSucceeds: \"⊁\", NotSucceedsEqual: \"⪰̸\", NotSucceedsSlantEqual: \"⋡\", NotSucceedsTilde: \"≿̸\", NotSuperset: \"⊃⃒\", NotSupersetEqual: \"⊉\", NotTilde: \"≁\", NotTildeEqual: \"≄\", NotTildeFullEqual: \"≇\", NotTildeTilde: \"≉\", NotVerticalBar: \"∤\", nparallel: \"∦\", npar: \"∦\", nparsl: \"⫽⃥\", npart: \"∂̸\", npolint: \"⨔\", npr: \"⊀\", nprcue: \"⋠\", nprec: \"⊀\", npreceq: \"⪯̸\", npre: \"⪯̸\", nrarrc: \"⤳̸\", nrarr: \"↛\", nrArr: \"⇏\", nrarrw: \"↝̸\", nrightarrow: \"↛\", nRightarrow: \"⇏\", nrtri: \"⋫\", nrtrie: \"⋭\", nsc: \"⊁\", nsccue: \"⋡\", nsce: \"⪰̸\", Nscr: \"𝒩\", nscr: \"𝓃\", nshortmid: \"∤\", nshortparallel: \"∦\", nsim: \"≁\", nsime: \"≄\", nsimeq: \"≄\", nsmid: \"∤\", nspar: \"∦\", nsqsube: \"⋢\", nsqsupe: \"⋣\", nsub: \"⊄\", nsubE: \"⫅̸\", nsube: \"⊈\", nsubset: \"⊂⃒\", nsubseteq: \"⊈\", nsubseteqq: \"⫅̸\", nsucc: \"⊁\", nsucceq: \"⪰̸\", nsup: \"⊅\", nsupE: \"⫆̸\", nsupe: \"⊉\", nsupset: \"⊃⃒\", nsupseteq: \"⊉\", nsupseteqq: \"⫆̸\", ntgl: \"≹\", Ntilde: \"Ñ\", ntilde: \"ñ\", ntlg: \"≸\", ntriangleleft: \"⋪\", ntrianglelefteq: \"⋬\", ntriangleright: \"⋫\", ntrianglerighteq: \"⋭\", Nu: \"Ν\", nu: \"ν\", num: \"#\", numero: \"№\", numsp: \" \", nvap: \"≍⃒\", nvdash: \"⊬\", nvDash: \"⊭\", nVdash: \"⊮\", nVDash: \"⊯\", nvge: \"≥⃒\", nvgt: \">⃒\", nvHarr: \"⤄\", nvinfin: \"⧞\", nvlArr: \"⤂\", nvle: \"≤⃒\", nvlt: \"<⃒\", nvltrie: \"⊴⃒\", nvrArr: \"⤃\", nvrtrie: \"⊵⃒\", nvsim: \"∼⃒\", nwarhk: \"⤣\", nwarr: \"↖\", nwArr: \"⇖\", nwarrow: \"↖\", nwnear: \"⤧\", Oacute: \"Ó\", oacute: \"ó\", oast: \"⊛\", Ocirc: \"Ô\", ocirc: \"ô\", ocir: \"⊚\", Ocy: \"О\", ocy: \"о\", odash: \"⊝\", Odblac: \"Ő\", odblac: \"ő\", odiv: \"⨸\", odot: \"⊙\", odsold: \"⦼\", OElig: \"Œ\", oelig: \"œ\", ofcir: \"⦿\", Ofr: \"𝔒\", ofr: \"𝔬\", ogon: \"˛\", Ograve: \"Ò\", ograve: \"ò\", ogt: \"⧁\", ohbar: \"⦵\", ohm: \"Ω\", oint: \"∮\", olarr: \"↺\", olcir: \"⦾\", olcross: \"⦻\", oline: \"‾\", olt: \"⧀\", Omacr: \"Ō\", omacr: \"ō\", Omega: \"Ω\", omega: \"ω\", Omicron: \"Ο\", omicron: \"ο\", omid: \"⦶\", ominus: \"⊖\", Oopf: \"𝕆\", oopf: \"𝕠\", opar: \"⦷\", OpenCurlyDoubleQuote: \"“\", OpenCurlyQuote: \"‘\", operp: \"⦹\", oplus: \"⊕\", orarr: \"↻\", Or: \"⩔\", or: \"∨\", ord: \"⩝\", order: \"ℴ\", orderof: \"ℴ\", ordf: \"ª\", ordm: \"º\", origof: \"⊶\", oror: \"⩖\", orslope: \"⩗\", orv: \"⩛\", oS: \"Ⓢ\", Oscr: \"𝒪\", oscr: \"ℴ\", Oslash: \"Ø\", oslash: \"ø\", osol: \"⊘\", Otilde: \"Õ\", otilde: \"õ\", otimesas: \"⨶\", Otimes: \"⨷\", otimes: \"⊗\", Ouml: \"Ö\", ouml: \"ö\", ovbar: \"⌽\", OverBar: \"‾\", OverBrace: \"⏞\", OverBracket: \"⎴\", OverParenthesis: \"⏜\", para: \"¶\", parallel: \"∥\", par: \"∥\", parsim: \"⫳\", parsl: \"⫽\", part: \"∂\", PartialD: \"∂\", Pcy: \"П\", pcy: \"п\", percnt: \"%\", period: \".\", permil: \"‰\", perp: \"⊥\", pertenk: \"‱\", Pfr: \"𝔓\", pfr: \"𝔭\", Phi: \"Φ\", phi: \"φ\", phiv: \"ϕ\", phmmat: \"ℳ\", phone: \"☎\", Pi: \"Π\", pi: \"π\", pitchfork: \"⋔\", piv: \"ϖ\", planck: \"ℏ\", planckh: \"ℎ\", plankv: \"ℏ\", plusacir: \"⨣\", plusb: \"⊞\", pluscir: \"⨢\", plus: \"+\", plusdo: \"∔\", plusdu: \"⨥\", pluse: \"⩲\", PlusMinus: \"±\", plusmn: \"±\", plussim: \"⨦\", plustwo: \"⨧\", pm: \"±\", Poincareplane: \"ℌ\", pointint: \"⨕\", popf: \"𝕡\", Popf: \"ℙ\", pound: \"£\", prap: \"⪷\", Pr: \"⪻\", pr: \"≺\", prcue: \"≼\", precapprox: \"⪷\", prec: \"≺\", preccurlyeq: \"≼\", Precedes: \"≺\", PrecedesEqual: \"⪯\", PrecedesSlantEqual: \"≼\", PrecedesTilde: \"≾\", preceq: \"⪯\", precnapprox: \"⪹\", precneqq: \"⪵\", precnsim: \"⋨\", pre: \"⪯\", prE: \"⪳\", precsim: \"≾\", prime: \"′\", Prime: \"″\", primes: \"ℙ\", prnap: \"⪹\", prnE: \"⪵\", prnsim: \"⋨\", prod: \"∏\", Product: \"∏\", profalar: \"⌮\", profline: \"⌒\", profsurf: \"⌓\", prop: \"∝\", Proportional: \"∝\", Proportion: \"∷\", propto: \"∝\", prsim: \"≾\", prurel: \"⊰\", Pscr: \"𝒫\", pscr: \"𝓅\", Psi: \"Ψ\", psi: \"ψ\", puncsp: \" \", Qfr: \"𝔔\", qfr: \"𝔮\", qint: \"⨌\", qopf: \"𝕢\", Qopf: \"ℚ\", qprime: \"⁗\", Qscr: \"𝒬\", qscr: \"𝓆\", quaternions: \"ℍ\", quatint: \"⨖\", quest: \"?\", questeq: \"≟\", quot: \"\\\"\", QUOT: \"\\\"\", rAarr: \"⇛\", race: \"∽̱\", Racute: \"Ŕ\", racute: \"ŕ\", radic: \"√\", raemptyv: \"⦳\", rang: \"⟩\", Rang: \"⟫\", rangd: \"⦒\", range: \"⦥\", rangle: \"⟩\", raquo: \"»\", rarrap: \"⥵\", rarrb: \"⇥\", rarrbfs: \"⤠\", rarrc: \"⤳\", rarr: \"→\", Rarr: \"↠\", rArr: \"⇒\", rarrfs: \"⤞\", rarrhk: \"↪\", rarrlp: \"↬\", rarrpl: \"⥅\", rarrsim: \"⥴\", Rarrtl: \"⤖\", rarrtl: \"↣\", rarrw: \"↝\", ratail: \"⤚\", rAtail: \"⤜\", ratio: \"∶\", rationals: \"ℚ\", rbarr: \"⤍\", rBarr: \"⤏\", RBarr: \"⤐\", rbbrk: \"❳\", rbrace: \"}\", rbrack: \"]\", rbrke: \"⦌\", rbrksld: \"⦎\", rbrkslu: \"⦐\", Rcaron: \"Ř\", rcaron: \"ř\", Rcedil: \"Ŗ\", rcedil: \"ŗ\", rceil: \"⌉\", rcub: \"}\", Rcy: \"Р\", rcy: \"р\", rdca: \"⤷\", rdldhar: \"⥩\", rdquo: \"”\", rdquor: \"”\", rdsh: \"↳\", real: \"ℜ\", realine: \"ℛ\", realpart: \"ℜ\", reals: \"ℝ\", Re: \"ℜ\", rect: \"▭\", reg: \"®\", REG: \"®\", ReverseElement: \"∋\", ReverseEquilibrium: \"⇋\", ReverseUpEquilibrium: \"⥯\", rfisht: \"⥽\", rfloor: \"⌋\", rfr: \"𝔯\", Rfr: \"ℜ\", rHar: \"⥤\", rhard: \"⇁\", rharu: \"⇀\", rharul: \"⥬\", Rho: \"Ρ\", rho: \"ρ\", rhov: \"ϱ\", RightAngleBracket: \"⟩\", RightArrowBar: \"⇥\", rightarrow: \"→\", RightArrow: \"→\", Rightarrow: \"⇒\", RightArrowLeftArrow: \"⇄\", rightarrowtail: \"↣\", RightCeiling: \"⌉\", RightDoubleBracket: \"⟧\", RightDownTeeVector: \"⥝\", RightDownVectorBar: \"⥕\", RightDownVector: \"⇂\", RightFloor: \"⌋\", rightharpoondown: \"⇁\", rightharpoonup: \"⇀\", rightleftarrows: \"⇄\", rightleftharpoons: \"⇌\", rightrightarrows: \"⇉\", rightsquigarrow: \"↝\", RightTeeArrow: \"↦\", RightTee: \"⊢\", RightTeeVector: \"⥛\", rightthreetimes: \"⋌\", RightTriangleBar: \"⧐\", RightTriangle: \"⊳\", RightTriangleEqual: \"⊵\", RightUpDownVector: \"⥏\", RightUpTeeVector: \"⥜\", RightUpVectorBar: \"⥔\", RightUpVector: \"↾\", RightVectorBar: \"⥓\", RightVector: \"⇀\", ring: \"˚\", risingdotseq: \"≓\", rlarr: \"⇄\", rlhar: \"⇌\", rlm: \"\\u200f\", rmoustache: \"⎱\", rmoust: \"⎱\", rnmid: \"⫮\", roang: \"⟭\", roarr: \"⇾\", robrk: \"⟧\", ropar: \"⦆\", ropf: \"𝕣\", Ropf: \"ℝ\", roplus: \"⨮\", rotimes: \"⨵\", RoundImplies: \"⥰\", rpar: \")\", rpargt: \"⦔\", rppolint: \"⨒\", rrarr: \"⇉\", Rrightarrow: \"⇛\", rsaquo: \"›\", rscr: \"𝓇\", Rscr: \"ℛ\", rsh: \"↱\", Rsh: \"↱\", rsqb: \"]\", rsquo: \"’\", rsquor: \"’\", rthree: \"⋌\", rtimes: \"⋊\", rtri: \"▹\", rtrie: \"⊵\", rtrif: \"▸\", rtriltri: \"⧎\", RuleDelayed: \"⧴\", ruluhar: \"⥨\", rx: \"℞\", Sacute: \"Ś\", sacute: \"ś\", sbquo: \"‚\", scap: \"⪸\", Scaron: \"Š\", scaron: \"š\", Sc: \"⪼\", sc: \"≻\", sccue: \"≽\", sce: \"⪰\", scE: \"⪴\", Scedil: \"Ş\", scedil: \"ş\", Scirc: \"Ŝ\", scirc: \"ŝ\", scnap: \"⪺\", scnE: \"⪶\", scnsim: \"⋩\", scpolint: \"⨓\", scsim: \"≿\", Scy: \"С\", scy: \"с\", sdotb: \"⊡\", sdot: \"⋅\", sdote: \"⩦\", searhk: \"⤥\", searr: \"↘\", seArr: \"⇘\", searrow: \"↘\", sect: \"§\", semi: \";\", seswar: \"⤩\", setminus: \"∖\", setmn: \"∖\", sext: \"✶\", Sfr: \"𝔖\", sfr: \"𝔰\", sfrown: \"⌢\", sharp: \"♯\", SHCHcy: \"Щ\", shchcy: \"щ\", SHcy: \"Ш\", shcy: \"ш\", ShortDownArrow: \"↓\", ShortLeftArrow: \"←\", shortmid: \"∣\", shortparallel: \"∥\", ShortRightArrow: \"→\", ShortUpArrow: \"↑\", shy: \"\\u00ad\", Sigma: \"Σ\", sigma: \"σ\", sigmaf: \"ς\", sigmav: \"ς\", sim: \"∼\", simdot: \"⩪\", sime: \"≃\", simeq: \"≃\", simg: \"⪞\", simgE: \"⪠\", siml: \"⪝\", simlE: \"⪟\", simne: \"≆\", simplus: \"⨤\", simrarr: \"⥲\", slarr: \"←\", SmallCircle: \"∘\", smallsetminus: \"∖\", smashp: \"⨳\", smeparsl: \"⧤\", smid: \"∣\", smile: \"⌣\", smt: \"⪪\", smte: \"⪬\", smtes: \"⪬︀\", SOFTcy: \"Ь\", softcy: \"ь\", solbar: \"⌿\", solb: \"⧄\", sol: \"/\", Sopf: \"𝕊\", sopf: \"𝕤\", spades: \"♠\", spadesuit: \"♠\", spar: \"∥\", sqcap: \"⊓\", sqcaps: \"⊓︀\", sqcup: \"⊔\", sqcups: \"⊔︀\", Sqrt: \"√\", sqsub: \"⊏\", sqsube: \"⊑\", sqsubset: \"⊏\", sqsubseteq: \"⊑\", sqsup: \"⊐\", sqsupe: \"⊒\", sqsupset: \"⊐\", sqsupseteq: \"⊒\", square: \"□\", Square: \"□\", SquareIntersection: \"⊓\", SquareSubset: \"⊏\", SquareSubsetEqual: \"⊑\", SquareSuperset: \"⊐\", SquareSupersetEqual: \"⊒\", SquareUnion: \"⊔\", squarf: \"▪\", squ: \"□\", squf: \"▪\", srarr: \"→\", Sscr: \"𝒮\", sscr: \"𝓈\", ssetmn: \"∖\", ssmile: \"⌣\", sstarf: \"⋆\", Star: \"⋆\", star: \"☆\", starf: \"★\", straightepsilon: \"ϵ\", straightphi: \"ϕ\", strns: \"¯\", sub: \"⊂\", Sub: \"⋐\", subdot: \"⪽\", subE: \"⫅\", sube: \"⊆\", subedot: \"⫃\", submult: \"⫁\", subnE: \"⫋\", subne: \"⊊\", subplus: \"⪿\", subrarr: \"⥹\", subset: \"⊂\", Subset: \"⋐\", subseteq: \"⊆\", subseteqq: \"⫅\", SubsetEqual: \"⊆\", subsetneq: \"⊊\", subsetneqq: \"⫋\", subsim: \"⫇\", subsub: \"⫕\", subsup: \"⫓\", succapprox: \"⪸\", succ: \"≻\", succcurlyeq: \"≽\", Succeeds: \"≻\", SucceedsEqual: \"⪰\", SucceedsSlantEqual: \"≽\", SucceedsTilde: \"≿\", succeq: \"⪰\", succnapprox: \"⪺\", succneqq: \"⪶\", succnsim: \"⋩\", succsim: \"≿\", SuchThat: \"∋\", sum: \"∑\", Sum: \"∑\", sung: \"♪\", sup1: \"¹\", sup2: \"²\", sup3: \"³\", sup: \"⊃\", Sup: \"⋑\", supdot: \"⪾\", supdsub: \"⫘\", supE: \"⫆\", supe: \"⊇\", supedot: \"⫄\", Superset: \"⊃\", SupersetEqual: \"⊇\", suphsol: \"⟉\", suphsub: \"⫗\", suplarr: \"⥻\", supmult: \"⫂\", supnE: \"⫌\", supne: \"⊋\", supplus: \"⫀\", supset: \"⊃\", Supset: \"⋑\", supseteq: \"⊇\", supseteqq: \"⫆\", supsetneq: \"⊋\", supsetneqq: \"⫌\", supsim: \"⫈\", supsub: \"⫔\", supsup: \"⫖\", swarhk: \"⤦\", swarr: \"↙\", swArr: \"⇙\", swarrow: \"↙\", swnwar: \"⤪\", szlig: \"ß\", Tab: \"\\u0009\", target: \"⌖\", Tau: \"Τ\", tau: \"τ\", tbrk: \"⎴\", Tcaron: \"Ť\", tcaron: \"ť\", Tcedil: \"Ţ\", tcedil: \"ţ\", Tcy: \"Т\", tcy: \"т\", tdot: \"⃛\", telrec: \"⌕\", Tfr: \"𝔗\", tfr: \"𝔱\", there4: \"∴\", therefore: \"∴\", Therefore: \"∴\", Theta: \"Θ\", theta: \"θ\", thetasym: \"ϑ\", thetav: \"ϑ\", thickapprox: \"≈\", thicksim: \"∼\", ThickSpace: \" \", ThinSpace: \" \", thinsp: \" \", thkap: \"≈\", thksim: \"∼\", THORN: \"Þ\", thorn: \"þ\", tilde: \"˜\", Tilde: \"∼\", TildeEqual: \"≃\", TildeFullEqual: \"≅\", TildeTilde: \"≈\", timesbar: \"⨱\", timesb: \"⊠\", times: \"×\", timesd: \"⨰\", tint: \"∭\", toea: \"⤨\", topbot: \"⌶\", topcir: \"⫱\", top: \"⊤\", Topf: \"𝕋\", topf: \"𝕥\", topfork: \"⫚\", tosa: \"⤩\", tprime: \"‴\", trade: \"™\", TRADE: \"™\", triangle: \"▵\", triangledown: \"▿\", triangleleft: \"◃\", trianglelefteq: \"⊴\", triangleq: \"≜\", triangleright: \"▹\", trianglerighteq: \"⊵\", tridot: \"◬\", trie: \"≜\", triminus: \"⨺\", TripleDot: \"⃛\", triplus: \"⨹\", trisb: \"⧍\", tritime: \"⨻\", trpezium: \"⏢\", Tscr: \"𝒯\", tscr: \"𝓉\", TScy: \"Ц\", tscy: \"ц\", TSHcy: \"Ћ\", tshcy: \"ћ\", Tstrok: \"Ŧ\", tstrok: \"ŧ\", twixt: \"≬\", twoheadleftarrow: \"↞\", twoheadrightarrow: \"↠\", Uacute: \"Ú\", uacute: \"ú\", uarr: \"↑\", Uarr: \"↟\", uArr: \"⇑\", Uarrocir: \"⥉\", Ubrcy: \"Ў\", ubrcy: \"ў\", Ubreve: \"Ŭ\", ubreve: \"ŭ\", Ucirc: \"Û\", ucirc: \"û\", Ucy: \"У\", ucy: \"у\", udarr: \"⇅\", Udblac: \"Ű\", udblac: \"ű\", udhar: \"⥮\", ufisht: \"⥾\", Ufr: \"𝔘\", ufr: \"𝔲\", Ugrave: \"Ù\", ugrave: \"ù\", uHar: \"⥣\", uharl: \"↿\", uharr: \"↾\", uhblk: \"▀\", ulcorn: \"⌜\", ulcorner: \"⌜\", ulcrop: \"⌏\", ultri: \"◸\", Umacr: \"Ū\", umacr: \"ū\", uml: \"¨\", UnderBar: \"_\", UnderBrace: \"⏟\", UnderBracket: \"⎵\", UnderParenthesis: \"⏝\", Union: \"⋃\", UnionPlus: \"⊎\", Uogon: \"Ų\", uogon: \"ų\", Uopf: \"𝕌\", uopf: \"𝕦\", UpArrowBar: \"⤒\", uparrow: \"↑\", UpArrow: \"↑\", Uparrow: \"⇑\", UpArrowDownArrow: \"⇅\", updownarrow: \"↕\", UpDownArrow: \"↕\", Updownarrow: \"⇕\", UpEquilibrium: \"⥮\", upharpoonleft: \"↿\", upharpoonright: \"↾\", uplus: \"⊎\", UpperLeftArrow: \"↖\", UpperRightArrow: \"↗\", upsi: \"υ\", Upsi: \"ϒ\", upsih: \"ϒ\", Upsilon: \"Υ\", upsilon: \"υ\", UpTeeArrow: \"↥\", UpTee: \"⊥\", upuparrows: \"⇈\", urcorn: \"⌝\", urcorner: \"⌝\", urcrop: \"⌎\", Uring: \"Ů\", uring: \"ů\", urtri: \"◹\", Uscr: \"𝒰\", uscr: \"𝓊\", utdot: \"⋰\", Utilde: \"Ũ\", utilde: \"ũ\", utri: \"▵\", utrif: \"▴\", uuarr: \"⇈\", Uuml: \"Ü\", uuml: \"ü\", uwangle: \"⦧\", vangrt: \"⦜\", varepsilon: \"ϵ\", varkappa: \"ϰ\", varnothing: \"∅\", varphi: \"ϕ\", varpi: \"ϖ\", varpropto: \"∝\", varr: \"↕\", vArr: \"⇕\", varrho: \"ϱ\", varsigma: \"ς\", varsubsetneq: \"⊊︀\", varsubsetneqq: \"⫋︀\", varsupsetneq: \"⊋︀\", varsupsetneqq: \"⫌︀\", vartheta: \"ϑ\", vartriangleleft: \"⊲\", vartriangleright: \"⊳\", vBar: \"⫨\", Vbar: \"⫫\", vBarv: \"⫩\", Vcy: \"В\", vcy: \"в\", vdash: \"⊢\", vDash: \"⊨\", Vdash: \"⊩\", VDash: \"⊫\", Vdashl: \"⫦\", veebar: \"⊻\", vee: \"∨\", Vee: \"⋁\", veeeq: \"≚\", vellip: \"⋮\", verbar: \"|\", Verbar: \"‖\", vert: \"|\", Vert: \"‖\", VerticalBar: \"∣\", VerticalLine: \"|\", VerticalSeparator: \"❘\", VerticalTilde: \"≀\", VeryThinSpace: \" \", Vfr: \"𝔙\", vfr: \"𝔳\", vltri: \"⊲\", vnsub: \"⊂⃒\", vnsup: \"⊃⃒\", Vopf: \"𝕍\", vopf: \"𝕧\", vprop: \"∝\", vrtri: \"⊳\", Vscr: \"𝒱\", vscr: \"𝓋\", vsubnE: \"⫋︀\", vsubne: \"⊊︀\", vsupnE: \"⫌︀\", vsupne: \"⊋︀\", Vvdash: \"⊪\", vzigzag: \"⦚\", Wcirc: \"Ŵ\", wcirc: \"ŵ\", wedbar: \"⩟\", wedge: \"∧\", Wedge: \"⋀\", wedgeq: \"≙\", weierp: \"℘\", Wfr: \"𝔚\", wfr: \"𝔴\", Wopf: \"𝕎\", wopf: \"𝕨\", wp: \"℘\", wr: \"≀\", wreath: \"≀\", Wscr: \"𝒲\", wscr: \"𝓌\", xcap: \"⋂\", xcirc: \"◯\", xcup: \"⋃\", xdtri: \"▽\", Xfr: \"𝔛\", xfr: \"𝔵\", xharr: \"⟷\", xhArr: \"⟺\", Xi: \"Ξ\", xi: \"ξ\", xlarr: \"⟵\", xlArr: \"⟸\", xmap: \"⟼\", xnis: \"⋻\", xodot: \"⨀\", Xopf: \"𝕏\", xopf: \"𝕩\", xoplus: \"⨁\", xotime: \"⨂\", xrarr: \"⟶\", xrArr: \"⟹\", Xscr: \"𝒳\", xscr: \"𝓍\", xsqcup: \"⨆\", xuplus: \"⨄\", xutri: \"△\", xvee: \"⋁\", xwedge: \"⋀\", Yacute: \"Ý\", yacute: \"ý\", YAcy: \"Я\", yacy: \"я\", Ycirc: \"Ŷ\", ycirc: \"ŷ\", Ycy: \"Ы\", ycy: \"ы\", yen: \"¥\", Yfr: \"𝔜\", yfr: \"𝔶\", YIcy: \"Ї\", yicy: \"ї\", Yopf: \"𝕐\", yopf: \"𝕪\", Yscr: \"𝒴\", yscr: \"𝓎\", YUcy: \"Ю\", yucy: \"ю\", yuml: \"ÿ\", Yuml: \"Ÿ\", Zacute: \"Ź\", zacute: \"ź\", Zcaron: \"Ž\", zcaron: \"ž\", Zcy: \"З\", zcy: \"з\", Zdot: \"Ż\", zdot: \"ż\", zeetrf: \"ℨ\", ZeroWidthSpace: \"\", Zeta: \"Ζ\", zeta: \"ζ\", zfr: \"𝔷\", Zfr: \"ℨ\", ZHcy: \"Ж\", zhcy: \"ж\", zigrarr: \"⇝\", zopf: \"𝕫\", Zopf: \"ℤ\", Zscr: \"𝒵\", zscr: \"𝓏\", zwj: \"\\u200d\", zwnj: \"\\u200c\"\n};\n\nvar HEXCHARCODE = /^#[xX]([A-Fa-f0-9]+)$/;\nvar CHARCODE = /^#([0-9]+)$/;\nvar NAMED = /^([A-Za-z0-9]+)$/;\nvar EntityParser = /** @class */ (function () {\n function EntityParser(named) {\n this.named = named;\n }\n EntityParser.prototype.parse = function (entity) {\n if (!entity) {\n return;\n }\n var matches = entity.match(HEXCHARCODE);\n if (matches) {\n return String.fromCharCode(parseInt(matches[1], 16));\n }\n matches = entity.match(CHARCODE);\n if (matches) {\n return String.fromCharCode(parseInt(matches[1], 10));\n }\n matches = entity.match(NAMED);\n if (matches) {\n return this.named[matches[1]];\n }\n };\n return EntityParser;\n}());\n\nvar WSP = /[\\t\\n\\f ]/;\nvar ALPHA = /[A-Za-z]/;\nvar CRLF = /\\r\\n?/g;\nfunction isSpace(char) {\n return WSP.test(char);\n}\nfunction isAlpha(char) {\n return ALPHA.test(char);\n}\nfunction preprocessInput(input) {\n return input.replace(CRLF, '\\n');\n}\n\nvar EventedTokenizer = /** @class */ (function () {\n function EventedTokenizer(delegate, entityParser, mode) {\n if (mode === void 0) { mode = 'precompile'; }\n this.delegate = delegate;\n this.entityParser = entityParser;\n this.mode = mode;\n this.state = \"beforeData\" /* beforeData */;\n this.line = -1;\n this.column = -1;\n this.input = '';\n this.index = -1;\n this.tagNameBuffer = '';\n this.states = {\n beforeData: function () {\n var char = this.peek();\n if (char === '<' && !this.isIgnoredEndTag()) {\n this.transitionTo(\"tagOpen\" /* tagOpen */);\n this.markTagStart();\n this.consume();\n }\n else {\n if (this.mode === 'precompile' && char === '\\n') {\n var tag = this.tagNameBuffer.toLowerCase();\n if (tag === 'pre' || tag === 'textarea') {\n this.consume();\n }\n }\n this.transitionTo(\"data\" /* data */);\n this.delegate.beginData();\n }\n },\n data: function () {\n var char = this.peek();\n var tag = this.tagNameBuffer;\n if (char === '<' && !this.isIgnoredEndTag()) {\n this.delegate.finishData();\n this.transitionTo(\"tagOpen\" /* tagOpen */);\n this.markTagStart();\n this.consume();\n }\n else if (char === '&' && tag !== 'script' && tag !== 'style') {\n this.consume();\n this.delegate.appendToData(this.consumeCharRef() || '&');\n }\n else {\n this.consume();\n this.delegate.appendToData(char);\n }\n },\n tagOpen: function () {\n var char = this.consume();\n if (char === '!') {\n this.transitionTo(\"markupDeclarationOpen\" /* markupDeclarationOpen */);\n }\n else if (char === '/') {\n this.transitionTo(\"endTagOpen\" /* endTagOpen */);\n }\n else if (char === '@' || char === ':' || isAlpha(char)) {\n this.transitionTo(\"tagName\" /* tagName */);\n this.tagNameBuffer = '';\n this.delegate.beginStartTag();\n this.appendToTagName(char);\n }\n },\n markupDeclarationOpen: function () {\n var char = this.consume();\n if (char === '-' && this.peek() === '-') {\n this.consume();\n this.transitionTo(\"commentStart\" /* commentStart */);\n this.delegate.beginComment();\n }\n else {\n var maybeDoctype = char.toUpperCase() + this.input.substring(this.index, this.index + 6).toUpperCase();\n if (maybeDoctype === 'DOCTYPE') {\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.transitionTo(\"doctype\" /* doctype */);\n if (this.delegate.beginDoctype)\n this.delegate.beginDoctype();\n }\n }\n },\n doctype: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"beforeDoctypeName\" /* beforeDoctypeName */);\n }\n },\n beforeDoctypeName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n return;\n }\n else {\n this.transitionTo(\"doctypeName\" /* doctypeName */);\n if (this.delegate.appendToDoctypeName)\n this.delegate.appendToDoctypeName(char.toLowerCase());\n }\n },\n doctypeName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"afterDoctypeName\" /* afterDoctypeName */);\n }\n else if (char === '>') {\n if (this.delegate.endDoctype)\n this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n if (this.delegate.appendToDoctypeName)\n this.delegate.appendToDoctypeName(char.toLowerCase());\n }\n },\n afterDoctypeName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n return;\n }\n else if (char === '>') {\n if (this.delegate.endDoctype)\n this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n var nextSixChars = char.toUpperCase() + this.input.substring(this.index, this.index + 5).toUpperCase();\n var isPublic = nextSixChars.toUpperCase() === 'PUBLIC';\n var isSystem = nextSixChars.toUpperCase() === 'SYSTEM';\n if (isPublic || isSystem) {\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n this.consume();\n }\n if (isPublic) {\n this.transitionTo(\"afterDoctypePublicKeyword\" /* afterDoctypePublicKeyword */);\n }\n else if (isSystem) {\n this.transitionTo(\"afterDoctypeSystemKeyword\" /* afterDoctypeSystemKeyword */);\n }\n }\n },\n afterDoctypePublicKeyword: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.transitionTo(\"beforeDoctypePublicIdentifier\" /* beforeDoctypePublicIdentifier */);\n this.consume();\n }\n else if (char === '\"') {\n this.transitionTo(\"doctypePublicIdentifierDoubleQuoted\" /* doctypePublicIdentifierDoubleQuoted */);\n this.consume();\n }\n else if (char === \"'\") {\n this.transitionTo(\"doctypePublicIdentifierSingleQuoted\" /* doctypePublicIdentifierSingleQuoted */);\n this.consume();\n }\n else if (char === '>') {\n this.consume();\n if (this.delegate.endDoctype)\n this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n },\n doctypePublicIdentifierDoubleQuoted: function () {\n var char = this.consume();\n if (char === '\"') {\n this.transitionTo(\"afterDoctypePublicIdentifier\" /* afterDoctypePublicIdentifier */);\n }\n else if (char === '>') {\n if (this.delegate.endDoctype)\n this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n if (this.delegate.appendToDoctypePublicIdentifier)\n this.delegate.appendToDoctypePublicIdentifier(char);\n }\n },\n doctypePublicIdentifierSingleQuoted: function () {\n var char = this.consume();\n if (char === \"'\") {\n this.transitionTo(\"afterDoctypePublicIdentifier\" /* afterDoctypePublicIdentifier */);\n }\n else if (char === '>') {\n if (this.delegate.endDoctype)\n this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n if (this.delegate.appendToDoctypePublicIdentifier)\n this.delegate.appendToDoctypePublicIdentifier(char);\n }\n },\n afterDoctypePublicIdentifier: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"betweenDoctypePublicAndSystemIdentifiers\" /* betweenDoctypePublicAndSystemIdentifiers */);\n }\n else if (char === '>') {\n if (this.delegate.endDoctype)\n this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else if (char === '\"') {\n this.transitionTo(\"doctypeSystemIdentifierDoubleQuoted\" /* doctypeSystemIdentifierDoubleQuoted */);\n }\n else if (char === \"'\") {\n this.transitionTo(\"doctypeSystemIdentifierSingleQuoted\" /* doctypeSystemIdentifierSingleQuoted */);\n }\n },\n betweenDoctypePublicAndSystemIdentifiers: function () {\n var char = this.consume();\n if (isSpace(char)) {\n return;\n }\n else if (char === '>') {\n if (this.delegate.endDoctype)\n this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else if (char === '\"') {\n this.transitionTo(\"doctypeSystemIdentifierDoubleQuoted\" /* doctypeSystemIdentifierDoubleQuoted */);\n }\n else if (char === \"'\") {\n this.transitionTo(\"doctypeSystemIdentifierSingleQuoted\" /* doctypeSystemIdentifierSingleQuoted */);\n }\n },\n doctypeSystemIdentifierDoubleQuoted: function () {\n var char = this.consume();\n if (char === '\"') {\n this.transitionTo(\"afterDoctypeSystemIdentifier\" /* afterDoctypeSystemIdentifier */);\n }\n else if (char === '>') {\n if (this.delegate.endDoctype)\n this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n if (this.delegate.appendToDoctypeSystemIdentifier)\n this.delegate.appendToDoctypeSystemIdentifier(char);\n }\n },\n doctypeSystemIdentifierSingleQuoted: function () {\n var char = this.consume();\n if (char === \"'\") {\n this.transitionTo(\"afterDoctypeSystemIdentifier\" /* afterDoctypeSystemIdentifier */);\n }\n else if (char === '>') {\n if (this.delegate.endDoctype)\n this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n if (this.delegate.appendToDoctypeSystemIdentifier)\n this.delegate.appendToDoctypeSystemIdentifier(char);\n }\n },\n afterDoctypeSystemIdentifier: function () {\n var char = this.consume();\n if (isSpace(char)) {\n return;\n }\n else if (char === '>') {\n if (this.delegate.endDoctype)\n this.delegate.endDoctype();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n },\n commentStart: function () {\n var char = this.consume();\n if (char === '-') {\n this.transitionTo(\"commentStartDash\" /* commentStartDash */);\n }\n else if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n this.delegate.appendToCommentData(char);\n this.transitionTo(\"comment\" /* comment */);\n }\n },\n commentStartDash: function () {\n var char = this.consume();\n if (char === '-') {\n this.transitionTo(\"commentEnd\" /* commentEnd */);\n }\n else if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n this.delegate.appendToCommentData('-');\n this.transitionTo(\"comment\" /* comment */);\n }\n },\n comment: function () {\n var char = this.consume();\n if (char === '-') {\n this.transitionTo(\"commentEndDash\" /* commentEndDash */);\n }\n else {\n this.delegate.appendToCommentData(char);\n }\n },\n commentEndDash: function () {\n var char = this.consume();\n if (char === '-') {\n this.transitionTo(\"commentEnd\" /* commentEnd */);\n }\n else {\n this.delegate.appendToCommentData('-' + char);\n this.transitionTo(\"comment\" /* comment */);\n }\n },\n commentEnd: function () {\n var char = this.consume();\n if (char === '>') {\n this.delegate.finishComment();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n this.delegate.appendToCommentData('--' + char);\n this.transitionTo(\"comment\" /* comment */);\n }\n },\n tagName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n }\n else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n }\n else if (char === '>') {\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n this.appendToTagName(char);\n }\n },\n endTagName: function () {\n var char = this.consume();\n if (isSpace(char)) {\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n this.tagNameBuffer = '';\n }\n else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n this.tagNameBuffer = '';\n }\n else if (char === '>') {\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n this.tagNameBuffer = '';\n }\n else {\n this.appendToTagName(char);\n }\n },\n beforeAttributeName: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.consume();\n return;\n }\n else if (char === '/') {\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n this.consume();\n }\n else if (char === '>') {\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else if (char === '=') {\n this.delegate.reportSyntaxError('attribute name cannot start with equals sign');\n this.transitionTo(\"attributeName\" /* attributeName */);\n this.delegate.beginAttribute();\n this.consume();\n this.delegate.appendToAttributeName(char);\n }\n else {\n this.transitionTo(\"attributeName\" /* attributeName */);\n this.delegate.beginAttribute();\n }\n },\n attributeName: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.transitionTo(\"afterAttributeName\" /* afterAttributeName */);\n this.consume();\n }\n else if (char === '/') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n }\n else if (char === '=') {\n this.transitionTo(\"beforeAttributeValue\" /* beforeAttributeValue */);\n this.consume();\n }\n else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else if (char === '\"' || char === \"'\" || char === '<') {\n this.delegate.reportSyntaxError(char + ' is not a valid character within attribute names');\n this.consume();\n this.delegate.appendToAttributeName(char);\n }\n else {\n this.consume();\n this.delegate.appendToAttributeName(char);\n }\n },\n afterAttributeName: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.consume();\n return;\n }\n else if (char === '/') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n }\n else if (char === '=') {\n this.consume();\n this.transitionTo(\"beforeAttributeValue\" /* beforeAttributeValue */);\n }\n else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.transitionTo(\"attributeName\" /* attributeName */);\n this.delegate.beginAttribute();\n this.consume();\n this.delegate.appendToAttributeName(char);\n }\n },\n beforeAttributeValue: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.consume();\n }\n else if (char === '\"') {\n this.transitionTo(\"attributeValueDoubleQuoted\" /* attributeValueDoubleQuoted */);\n this.delegate.beginAttributeValue(true);\n this.consume();\n }\n else if (char === \"'\") {\n this.transitionTo(\"attributeValueSingleQuoted\" /* attributeValueSingleQuoted */);\n this.delegate.beginAttributeValue(true);\n this.consume();\n }\n else if (char === '>') {\n this.delegate.beginAttributeValue(false);\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n this.transitionTo(\"attributeValueUnquoted\" /* attributeValueUnquoted */);\n this.delegate.beginAttributeValue(false);\n this.consume();\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueDoubleQuoted: function () {\n var char = this.consume();\n if (char === '\"') {\n this.delegate.finishAttributeValue();\n this.transitionTo(\"afterAttributeValueQuoted\" /* afterAttributeValueQuoted */);\n }\n else if (char === '&') {\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n }\n else {\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueSingleQuoted: function () {\n var char = this.consume();\n if (char === \"'\") {\n this.delegate.finishAttributeValue();\n this.transitionTo(\"afterAttributeValueQuoted\" /* afterAttributeValueQuoted */);\n }\n else if (char === '&') {\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n }\n else {\n this.delegate.appendToAttributeValue(char);\n }\n },\n attributeValueUnquoted: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n }\n else if (char === '/') {\n this.delegate.finishAttributeValue();\n this.consume();\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n }\n else if (char === '&') {\n this.consume();\n this.delegate.appendToAttributeValue(this.consumeCharRef() || '&');\n }\n else if (char === '>') {\n this.delegate.finishAttributeValue();\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n this.consume();\n this.delegate.appendToAttributeValue(char);\n }\n },\n afterAttributeValueQuoted: function () {\n var char = this.peek();\n if (isSpace(char)) {\n this.consume();\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n }\n else if (char === '/') {\n this.consume();\n this.transitionTo(\"selfClosingStartTag\" /* selfClosingStartTag */);\n }\n else if (char === '>') {\n this.consume();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n }\n },\n selfClosingStartTag: function () {\n var char = this.peek();\n if (char === '>') {\n this.consume();\n this.delegate.markTagAsSelfClosing();\n this.delegate.finishTag();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n else {\n this.transitionTo(\"beforeAttributeName\" /* beforeAttributeName */);\n }\n },\n endTagOpen: function () {\n var char = this.consume();\n if (char === '@' || char === ':' || isAlpha(char)) {\n this.transitionTo(\"endTagName\" /* endTagName */);\n this.tagNameBuffer = '';\n this.delegate.beginEndTag();\n this.appendToTagName(char);\n }\n }\n };\n this.reset();\n }\n EventedTokenizer.prototype.reset = function () {\n this.transitionTo(\"beforeData\" /* beforeData */);\n this.input = '';\n this.tagNameBuffer = '';\n this.index = 0;\n this.line = 1;\n this.column = 0;\n this.delegate.reset();\n };\n EventedTokenizer.prototype.transitionTo = function (state) {\n this.state = state;\n };\n EventedTokenizer.prototype.tokenize = function (input) {\n this.reset();\n this.tokenizePart(input);\n this.tokenizeEOF();\n };\n EventedTokenizer.prototype.tokenizePart = function (input) {\n this.input += preprocessInput(input);\n while (this.index < this.input.length) {\n var handler = this.states[this.state];\n if (handler !== undefined) {\n handler.call(this);\n }\n else {\n throw new Error(\"unhandled state \" + this.state);\n }\n }\n };\n EventedTokenizer.prototype.tokenizeEOF = function () {\n this.flushData();\n };\n EventedTokenizer.prototype.flushData = function () {\n if (this.state === 'data') {\n this.delegate.finishData();\n this.transitionTo(\"beforeData\" /* beforeData */);\n }\n };\n EventedTokenizer.prototype.peek = function () {\n return this.input.charAt(this.index);\n };\n EventedTokenizer.prototype.consume = function () {\n var char = this.peek();\n this.index++;\n if (char === '\\n') {\n this.line++;\n this.column = 0;\n }\n else {\n this.column++;\n }\n return char;\n };\n EventedTokenizer.prototype.consumeCharRef = function () {\n var endIndex = this.input.indexOf(';', this.index);\n if (endIndex === -1) {\n return;\n }\n var entity = this.input.slice(this.index, endIndex);\n var chars = this.entityParser.parse(entity);\n if (chars) {\n var count = entity.length;\n // consume the entity chars\n while (count) {\n this.consume();\n count--;\n }\n // consume the `;`\n this.consume();\n return chars;\n }\n };\n EventedTokenizer.prototype.markTagStart = function () {\n this.delegate.tagOpen();\n };\n EventedTokenizer.prototype.appendToTagName = function (char) {\n this.tagNameBuffer += char;\n this.delegate.appendToTagName(char);\n };\n EventedTokenizer.prototype.isIgnoredEndTag = function () {\n var tag = this.tagNameBuffer;\n return (tag === 'title' && this.input.substring(this.index, this.index + 8) !== '</title>') ||\n (tag === 'style' && this.input.substring(this.index, this.index + 8) !== '</style>') ||\n (tag === 'script' && this.input.substring(this.index, this.index + 9) !== '</script>');\n };\n return EventedTokenizer;\n}());\n\nvar Tokenizer = /** @class */ (function () {\n function Tokenizer(entityParser, options) {\n if (options === void 0) { options = {}; }\n this.options = options;\n this.token = null;\n this.startLine = 1;\n this.startColumn = 0;\n this.tokens = [];\n this.tokenizer = new EventedTokenizer(this, entityParser, options.mode);\n this._currentAttribute = undefined;\n }\n Tokenizer.prototype.tokenize = function (input) {\n this.tokens = [];\n this.tokenizer.tokenize(input);\n return this.tokens;\n };\n Tokenizer.prototype.tokenizePart = function (input) {\n this.tokens = [];\n this.tokenizer.tokenizePart(input);\n return this.tokens;\n };\n Tokenizer.prototype.tokenizeEOF = function () {\n this.tokens = [];\n this.tokenizer.tokenizeEOF();\n return this.tokens[0];\n };\n Tokenizer.prototype.reset = function () {\n this.token = null;\n this.startLine = 1;\n this.startColumn = 0;\n };\n Tokenizer.prototype.current = function () {\n var token = this.token;\n if (token === null) {\n throw new Error('token was unexpectedly null');\n }\n if (arguments.length === 0) {\n return token;\n }\n for (var i = 0; i < arguments.length; i++) {\n if (token.type === arguments[i]) {\n return token;\n }\n }\n throw new Error(\"token type was unexpectedly \" + token.type);\n };\n Tokenizer.prototype.push = function (token) {\n this.token = token;\n this.tokens.push(token);\n };\n Tokenizer.prototype.currentAttribute = function () {\n return this._currentAttribute;\n };\n Tokenizer.prototype.addLocInfo = function () {\n if (this.options.loc) {\n this.current().loc = {\n start: {\n line: this.startLine,\n column: this.startColumn\n },\n end: {\n line: this.tokenizer.line,\n column: this.tokenizer.column\n }\n };\n }\n this.startLine = this.tokenizer.line;\n this.startColumn = this.tokenizer.column;\n };\n // Data\n Tokenizer.prototype.beginDoctype = function () {\n this.push({\n type: \"Doctype\" /* Doctype */,\n name: '',\n });\n };\n Tokenizer.prototype.appendToDoctypeName = function (char) {\n this.current(\"Doctype\" /* Doctype */).name += char;\n };\n Tokenizer.prototype.appendToDoctypePublicIdentifier = function (char) {\n var doctype = this.current(\"Doctype\" /* Doctype */);\n if (doctype.publicIdentifier === undefined) {\n doctype.publicIdentifier = char;\n }\n else {\n doctype.publicIdentifier += char;\n }\n };\n Tokenizer.prototype.appendToDoctypeSystemIdentifier = function (char) {\n var doctype = this.current(\"Doctype\" /* Doctype */);\n if (doctype.systemIdentifier === undefined) {\n doctype.systemIdentifier = char;\n }\n else {\n doctype.systemIdentifier += char;\n }\n };\n Tokenizer.prototype.endDoctype = function () {\n this.addLocInfo();\n };\n Tokenizer.prototype.beginData = function () {\n this.push({\n type: \"Chars\" /* Chars */,\n chars: ''\n });\n };\n Tokenizer.prototype.appendToData = function (char) {\n this.current(\"Chars\" /* Chars */).chars += char;\n };\n Tokenizer.prototype.finishData = function () {\n this.addLocInfo();\n };\n // Comment\n Tokenizer.prototype.beginComment = function () {\n this.push({\n type: \"Comment\" /* Comment */,\n chars: ''\n });\n };\n Tokenizer.prototype.appendToCommentData = function (char) {\n this.current(\"Comment\" /* Comment */).chars += char;\n };\n Tokenizer.prototype.finishComment = function () {\n this.addLocInfo();\n };\n // Tags - basic\n Tokenizer.prototype.tagOpen = function () { };\n Tokenizer.prototype.beginStartTag = function () {\n this.push({\n type: \"StartTag\" /* StartTag */,\n tagName: '',\n attributes: [],\n selfClosing: false\n });\n };\n Tokenizer.prototype.beginEndTag = function () {\n this.push({\n type: \"EndTag\" /* EndTag */,\n tagName: ''\n });\n };\n Tokenizer.prototype.finishTag = function () {\n this.addLocInfo();\n };\n Tokenizer.prototype.markTagAsSelfClosing = function () {\n this.current(\"StartTag\" /* StartTag */).selfClosing = true;\n };\n // Tags - name\n Tokenizer.prototype.appendToTagName = function (char) {\n this.current(\"StartTag\" /* StartTag */, \"EndTag\" /* EndTag */).tagName += char;\n };\n // Tags - attributes\n Tokenizer.prototype.beginAttribute = function () {\n this._currentAttribute = ['', '', false];\n };\n Tokenizer.prototype.appendToAttributeName = function (char) {\n this.currentAttribute()[0] += char;\n };\n Tokenizer.prototype.beginAttributeValue = function (isQuoted) {\n this.currentAttribute()[2] = isQuoted;\n };\n Tokenizer.prototype.appendToAttributeValue = function (char) {\n this.currentAttribute()[1] += char;\n };\n Tokenizer.prototype.finishAttributeValue = function () {\n this.current(\"StartTag\" /* StartTag */).attributes.push(this._currentAttribute);\n };\n Tokenizer.prototype.reportSyntaxError = function (message) {\n this.current().syntaxError = message;\n };\n return Tokenizer;\n}());\n\nfunction tokenize(input, options) {\n var tokenizer = new Tokenizer(new EntityParser(namedCharRefs), options);\n return tokenizer.tokenize(input);\n}\n\nexport { namedCharRefs as HTML5NamedCharRefs, EntityParser, EventedTokenizer, Tokenizer, tokenize };\n//# sourceMappingURL=index.js.map","import type { PresentArray } from '@glimmer/interfaces';\nimport { isPresentArray } from '@glimmer/debug-util';\n\nimport type { SourceSpan } from './span';\n\nexport interface SourceLocation {\n start: SourcePosition;\n end: SourcePosition;\n}\n\nexport interface SourcePosition {\n /** >= 1 */\n line: number;\n /** >= 0 */\n column: number;\n}\n\nexport const UNKNOWN_POSITION = Object.freeze({\n line: 1,\n column: 0,\n} as const);\n\nexport const SYNTHETIC_LOCATION = Object.freeze({\n source: '(synthetic)',\n start: UNKNOWN_POSITION,\n end: UNKNOWN_POSITION,\n} as const);\n\n/** @deprecated */\nexport const SYNTHETIC = SYNTHETIC_LOCATION;\n\nexport const TEMPORARY_LOCATION = Object.freeze({\n source: '(temporary)',\n start: UNKNOWN_POSITION,\n end: UNKNOWN_POSITION,\n} as const);\n\nexport const NON_EXISTENT_LOCATION = Object.freeze({\n source: '(nonexistent)',\n start: UNKNOWN_POSITION,\n end: UNKNOWN_POSITION,\n} as const);\n\nexport const BROKEN_LOCATION = Object.freeze({\n source: '(broken)',\n start: UNKNOWN_POSITION,\n end: UNKNOWN_POSITION,\n} as const);\n\nexport type LocatedWithSpan = { offsets: SourceSpan };\nexport type LocatedWithOptionalSpan = { offsets: SourceSpan | null };\n\nexport type LocatedWithPositions = { loc: SourceLocation };\nexport type LocatedWithOptionalPositions = { loc?: SourceLocation };\n\nexport function isLocatedWithPositionsArray(\n location: LocatedWithOptionalPositions[]\n): location is PresentArray<LocatedWithPositions> {\n return isPresentArray(location) && location.every(isLocatedWithPositions);\n}\n\nexport function isLocatedWithPositions(\n location: LocatedWithOptionalPositions\n): location is LocatedWithPositions {\n return location.loc !== undefined;\n}\n\nexport type HasSourceLocation =\n | SourceLocation\n | LocatedWithPositions\n | PresentArray<LocatedWithPositions>;\n\nexport type MaybeHasSourceLocation =\n | null\n | LocatedWithOptionalPositions\n | LocatedWithOptionalPositions[];\n","/**\n * We have already computed the character position of this offset or span.\n */\nexport type CharOffsetKind = 'CharPosition';\nexport const CHAR_OFFSET_KIND: CharOffsetKind = 'CharPosition';\n/**\n * This offset or span was instantiated with a Handlebars SourcePosition or SourceLocation. Its\n * character position will be computed on demand.\n */\nexport type HbsPositionKind = 'HbsPosition';\nexport const HBS_POSITION_KIND: HbsPositionKind = 'HbsPosition';\n/**\n * for (rare) situations where a node is created but there was no source location (e.g. the name\n * \"default\" in default blocks when the word \"default\" never appeared in source). This is used\n * by the internals when there is a legitimate reason for the internals to synthesize a node\n * with no location.\n */\nexport type InternalSyntheticKind = 'InternalsSynthetic';\nexport const INTERNAL_SYNTHETIC_KIND: InternalSyntheticKind = 'InternalsSynthetic';\n\n/**\n * For situations where a node represents zero parts of the source (for example, empty arguments).\n * In general, we attempt to assign these nodes *some* position (empty arguments can be\n * positioned immediately after the callee), but it's not always possible\n */\nexport type NonExistentKind = 'NonExistent';\nexport const NON_EXISTENT_KIND: NonExistentKind = 'NonExistent';\n\n/**\n * For situations where a source location was expected, but it didn't correspond to the node in\n * the source. This happens if a plugin creates broken locations.\n */\nexport type BrokenKind = 'Broken';\nexport const BROKEN_KIND: BrokenKind = 'Broken';\n\nexport type OffsetKind = CharOffsetKind | HbsPositionKind | InvisibleKind;\n\n/**\n * These kinds describe spans that don't have a concrete location in the original source.\n */\nexport type InvisibleKind = BrokenKind | InternalSyntheticKind | NonExistentKind;\n\nexport function isInvisible(kind: OffsetKind): kind is InvisibleKind {\n return kind !== CHAR_OFFSET_KIND && kind !== HBS_POSITION_KIND;\n}\n","import { isPresentArray, localAssert } from '@glimmer/debug-util';\n\nimport type { CharOffsetKind, HbsPositionKind, OffsetKind } from './kinds';\nimport type { CharPosition, HbsPosition, InvisiblePosition, PositionData } from './offset';\n\nimport { BROKEN_KIND, INTERNAL_SYNTHETIC_KIND, NON_EXISTENT_KIND } from './kinds';\n\n/**\n * This file implements the DSL used by span and offset in places where they need to exhaustively\n * consider all combinations of states (Handlebars offsets, character offsets and invisible/broken\n * offsets).\n *\n * It's probably overkill, but it makes the code that uses it clear. It could be refactored or\n * removed.\n */\n\nexport const MatchAny = 'MATCH_ANY';\nexport type MatchAny = 'MATCH_ANY';\n\ntype Matches =\n | 'Char,Hbs'\n | 'Hbs,Char'\n | 'Hbs,Hbs'\n | 'Char,Char'\n | 'Invisible,Any'\n | 'Any,Invisible';\n\nexport const IsInvisible = 'IS_INVISIBLE';\nexport type IsInvisible = 'IS_INVISIBLE';\n\ntype Pattern = OffsetKind | IsInvisible | MatchAny;\n\nclass WhenList<Out> {\n _whens: When<Out>[];\n\n constructor(whens: When<Out>[]) {\n this._whens = whens;\n }\n\n first(kind: OffsetKind): Out | null {\n for (const when of this._whens) {\n const value = when.match(kind);\n if (isPresentArray(value)) {\n return value[0];\n }\n }\n\n return null;\n }\n}\n\nclass When<Out> {\n _map: Map<Pattern, Out> = new Map();\n\n get(pattern: Pattern, or: () => Out): Out {\n let value = this._map.get(pattern);\n\n if (value) {\n return value;\n }\n\n value = or();\n\n this._map.set(pattern, value);\n\n return value;\n }\n\n add(pattern: Pattern, out: Out): void {\n this._map.set(pattern, out);\n }\n\n match(kind: OffsetKind): Out[] {\n const pattern = patternFor(kind);\n\n const out: Out[] = [];\n\n const exact = this._map.get(pattern);\n const fallback = this._map.get(MatchAny);\n\n if (exact) {\n out.push(exact);\n }\n\n if (fallback) {\n out.push(fallback);\n }\n\n return out;\n }\n}\n\ntype ExhaustiveCheck<Out, In extends Matches, Removed extends Matches> =\n Exclude<In, Removed> extends never ? ExhaustiveMatcher<Out> : Matcher<Out, Exclude<In, Removed>>;\n\nexport type MatchFn<Out> = (left: PositionData, right: PositionData) => Out;\n\ninterface ExhaustiveMatcher<Out> {\n validate(): MatchFn<Out>;\n}\n\nexport function match<Out>(callback: (m: Matcher<Out>) => ExhaustiveMatcher<Out>): MatchFn<Out> {\n return callback(new Matcher()).validate();\n}\n\nclass Matcher<Out, M extends Matches = Matches> {\n _whens: When<When<(left: PositionData, right: PositionData) => Out>> = new When();\n\n /**\n * You didn't exhaustively match all possibilities.\n */\n protected validate(): MatchFn<Out> {\n return (left, right) => this.matchFor(left.kind, right.kind)(left, right);\n }\n\n private matchFor(\n left: OffsetKind,\n right: OffsetKind\n ): (left: PositionData, right: PositionData) => Out {\n const nesteds = this._whens.match(left);\n\n localAssert(\n isPresentArray(nesteds),\n `no match defined for (${left}, ${right}) and no AnyMatch defined either`\n );\n\n const callback = new WhenList(nesteds).first(right);\n\n localAssert(\n callback !== null,\n `no match defined for (${left}, ${right}) and no AnyMatch defined either`\n );\n\n return callback;\n }\n\n // This big block is the bulk of the heavy lifting in this file. It facilitates exhaustiveness\n // checking so that matchers can ensure they've actually covered all the cases (and TypeScript\n // will treat it as an exhaustive match).\n when(\n left: CharOffsetKind,\n right: HbsPositionKind,\n callback: (left: CharPosition, right: HbsPosition) => Out\n ): ExhaustiveCheck<Out, M, 'Char,Hbs'>;\n when(\n left: HbsPositionKind,\n right: CharOffsetKind,\n callback: (left: HbsPosition, right: CharPosition) => Out\n ): ExhaustiveCheck<Out, M, 'Hbs,Char'>;\n when(\n left: HbsPositionKind,\n right: HbsPositionKind,\n callback: (left: HbsPosition, right: HbsPosition) => Out\n ): ExhaustiveCheck<Out, M, 'Hbs,Hbs'>;\n when(\n left: CharOffsetKind,\n right: CharOffsetKind,\n callback: (left: CharPosition, right: CharPosition) => Out\n ): ExhaustiveCheck<Out, M, 'Char,Char'>;\n when(\n left: IsInvisible,\n right: MatchAny,\n callback: (left: InvisiblePosition, right: PositionData) => Out\n ): Matcher<Out, Exclude<M, 'Invisible,Any'>>;\n when(\n left: MatchAny,\n right: IsInvisible,\n callback: (left: PositionData, right: InvisiblePosition) => Out\n ): ExhaustiveCheck<Out, M, 'Any,Invisible'>;\n when(\n left: MatchAny,\n right: MatchAny,\n callback: (left: PositionData, right: PositionData) => Out\n ): ExhaustiveMatcher<Out>;\n when(\n left: Pattern,\n right: Pattern,\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: (left: any, right: any) => Out\n ): ExhaustiveCheck<Out, M, M> | Matcher<Out, Exclude<M, M>> {\n this._whens.get(left, () => new When()).add(right, callback);\n\n return this;\n }\n}\n\nfunction patternFor(kind: OffsetKind): Pattern {\n switch (kind) {\n case BROKEN_KIND:\n case INTERNAL_SYNTHETIC_KIND:\n case NON_EXISTENT_KIND:\n return IsInvisible;\n default:\n return kind;\n }\n}\n","import * as src from './api';\n\nexport type SerializedSourceSlice<Chars extends string = string> = [\n chars: Chars,\n span: src.SerializedSourceSpan,\n];\n\nexport class SourceSlice<Chars extends string = string> {\n static synthetic<S extends string>(chars: S): SourceSlice<S> {\n let offsets = src.SourceSpan.synthetic(chars);\n return new SourceSlice({ loc: offsets, chars: chars });\n }\n\n static load(source: src.Source, slice: SerializedSourceSlice): SourceSlice {\n return new SourceSlice({\n loc: src.SourceSpan.load(source, slice[1]),\n chars: slice[0],\n });\n }\n\n readonly chars: Chars;\n readonly loc: src.SourceSpan;\n\n constructor(options: { loc: src.SourceSpan; chars: Chars }) {\n this.loc = options.loc;\n this.chars = options.chars;\n }\n\n getString(): string {\n return this.chars;\n }\n\n serialize(): SerializedSourceSlice<Chars> {\n return [this.chars, this.loc.serialize()];\n }\n}\n","import { localAssert } from '@glimmer/debug-util';\nimport { LOCAL_DEBUG } from '@glimmer/local-debug-flags';\nimport { assertNever } from '@glimmer/util';\n\nimport type { SourceLocation, SourcePosition } from '../location';\nimport type { Source } from '../source';\nimport type { InvisibleKind, OffsetKind } from './kinds';\nimport type { MatchFn } from './match';\nimport type { AnyPosition, SourceOffset } from './offset';\n\nimport { BROKEN_LOCATION, NON_EXISTENT_LOCATION } from '../location';\nimport { SourceSlice } from '../slice';\nimport {\n BROKEN_KIND,\n CHAR_OFFSET_KIND,\n HBS_POSITION_KIND,\n INTERNAL_SYNTHETIC_KIND,\n isInvisible,\n NON_EXISTENT_KIND,\n} from './kinds';\nimport { IsInvisible, match, MatchAny } from './match';\nimport { BROKEN, CharPosition, HbsPosition, InvisiblePosition } from './offset';\n\n/**\n * All spans have these details in common.\n */\ninterface SpanData {\n readonly kind: OffsetKind;\n\n /**\n * Convert this span into a string. If the span is broken, return `''`.\n */\n asString(): string;\n\n /**\n * Gets the module the span was located in.\n */\n getModule(): string;\n\n /**\n * Get the starting position for this span. Try to avoid creating new position objects, as they\n * cache computations.\n */\n getStart(): AnyPosition;\n\n /**\n * Get the ending position for this span. Try to avoid creating new position objects, as they\n * cache computations.\n */\n getEnd(): AnyPosition;\n\n /**\n * Compute the `SourceLocation` for this span, returned as an instance of `HbsSpan`.\n */\n toHbsSpan(): HbsSpan | null;\n\n /**\n * For compatibility, whenever the `start` or `end` of a {@see SourceOffset} changes, spans are\n * notified of the change so they can update themselves. This shouldn't happen outside of AST\n * plugins.\n */\n locDidUpdate(changes: { start?: SourcePosition; end?: SourcePosition }): void;\n\n /**\n * Serialize into a {@see SerializedSourceSpan}, which is compact and designed for readability in\n * context like AST Explorer. If you need a {@see SourceLocation}, use {@see toJSON}.\n */\n serialize(): SerializedSourceSpan;\n}\n\n/**\n * A `SourceSpan` object represents a span of characters inside of a template source.\n *\n * There are three kinds of `SourceSpan` objects:\n *\n * - `ConcreteSourceSpan`, which contains byte offsets\n * - `LazySourceSpan`, which contains `SourceLocation`s from the Handlebars AST, which can be\n * converted to byte offsets on demand.\n * - `InvisibleSourceSpan`, which represent source strings that aren't present in the source,\n * because:\n * - they were created synthetically\n * - their location is nonsensical (the span is broken)\n * - they represent nothing in the source (this currently happens only when a bug in the\n * upstream Handlebars parser fails to assign a location to empty blocks)\n *\n * At a high level, all `SourceSpan` objects provide:\n *\n * - byte offsets\n * - source in column and line format\n *\n * And you can do these operations on `SourceSpan`s:\n *\n * - collapse it to a `SourceSpan` representing its starting or ending position\n * - slice out some characters, optionally skipping some characters at the beginning or end\n * - create a new `SourceSpan` with a different starting or ending offset\n *\n * All SourceSpan objects implement `SourceLocation`, for compatibility. All SourceSpan\n * objects have a `toJSON` that emits `SourceLocation`, also for compatibility.\n *\n * For compatibility, subclasses of `AbstractSourceSpan` must implement `locDidUpdate`, which\n * happens when an AST plugin attempts to modify the `start` or `end` of a span directly.\n *\n * The goal is to avoid creating any problems for use-cases like AST Explorer.\n */\nexport class SourceSpan implements SourceLocation {\n static get NON_EXISTENT(): SourceSpan {\n return new InvisibleSpan(NON_EXISTENT_KIND, NON_EXISTENT_LOCATION).wrap();\n }\n\n static load(source: Source, serialized: SerializedSourceSpan): SourceSpan {\n if (typeof serialized === 'number') {\n return SourceSpan.forCharPositions(source, serialized, serialized);\n } else if (typeof serialized === 'string') {\n return SourceSpan.synthetic(serialized);\n } else if (Array.isArray(serialized)) {\n return SourceSpan.forCharPositions(source, serialized[0], serialized[1]);\n } else if (serialized === NON_EXISTENT_KIND) {\n return SourceSpan.NON_EXISTENT;\n } else if (serialized === BROKEN_KIND) {\n return SourceSpan.broken(BROKEN_LOCATION);\n }\n\n assertNever(serialized);\n }\n\n static forHbsLoc(source: Source, loc: SourceLocation): SourceSpan {\n const start = new HbsPosition(source, loc.start);\n const end = new HbsPosition(source, loc.end);\n return new HbsSpan(source, { start, end }, loc).wrap();\n }\n\n static forCharPositions(source: Source, startPos: number, endPos: number): SourceSpan {\n const start = new CharPosition(source, startPos);\n const end = new CharPosition(source, endPos);\n\n return new CharPositionSpan(source, { start, end }).wrap();\n }\n\n static synthetic(chars: string): SourceSpan {\n return new InvisibleSpan(INTERNAL_SYNTHETIC_KIND, NON_EXISTENT_LOCATION, chars).wrap();\n }\n\n static broken(pos: SourceLocation = BROKEN_LOCATION): SourceSpan {\n return new InvisibleSpan(BROKEN_KIND, pos).wrap();\n }\n\n readonly isInvisible: boolean;\n\n constructor(private data: SpanData & AnySpan) {\n this.isInvisible = isInvisible(data.kind);\n }\n\n getStart(): SourceOffset {\n return this.data.getStart().wrap();\n }\n\n getEnd(): SourceOffset {\n return this.data.getEnd().wrap();\n }\n\n get loc(): SourceLocation {\n const span = this.data.toHbsSpan();\n return span === null ? BROKEN_LOCATION : span.toHbsLoc();\n }\n\n get module(): string {\n return this.data.getModule();\n }\n\n /**\n * Get the starting `SourcePosition` for this `SourceSpan`, lazily computing it if needed.\n */\n get startPosition(): SourcePosition {\n return this.loc.start;\n }\n\n /**\n * Get the ending `SourcePosition` for this `SourceSpan`, lazily computing it if needed.\n */\n get endPosition(): SourcePosition {\n return this.loc.end;\n }\n\n /**\n * Support converting ASTv1 nodes into a serialized format using JSON.stringify.\n */\n toJSON(): SourceLocation {\n return this.loc;\n }\n\n /**\n * Create a new span with the current span's end and a new beginning.\n */\n withStart(other: SourceOffset): SourceSpan {\n return span(other.data, this.data.getEnd());\n }\n\n /**\n * Create a new span with the current span's beginning and a new ending.\n */\n withEnd(other: SourceOffset): SourceSpan {\n return span(this.data.getStart(), other.data);\n }\n\n asString(): string {\n return this.data.asString();\n }\n\n /**\n * Convert this `SourceSpan` into a `SourceSlice`.\n */\n toSlice(expected?: string): SourceSlice {\n const chars = this.data.asString();\n\n localAssert(\n expected === undefined || expected === chars,\n `unexpectedly found ${JSON.stringify(chars)} when slicing source, ` +\n `but expected ${JSON.stringify(expected)}`\n );\n\n return new SourceSlice({\n loc: this,\n chars: expected || chars,\n });\n }\n\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use startPosition instead\n */\n get start(): SourcePosition {\n return this.loc.start;\n }\n\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use withStart instead\n */\n set start(position: SourcePosition) {\n this.data.locDidUpdate({ start: position });\n }\n\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use endPosition instead\n */\n get end(): SourcePosition {\n return this.loc.end;\n }\n\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use withEnd instead\n */\n set end(position: SourcePosition) {\n this.data.locDidUpdate({ end: position });\n }\n\n /**\n * For compatibility with SourceLocation in AST plugins\n *\n * @deprecated use module instead\n */\n get source(): string {\n return this.module;\n }\n\n collapse(where: 'start' | 'end'): SourceSpan {\n switch (where) {\n case 'start':\n return this.getStart().collapsed();\n case 'end':\n return this.getEnd().collapsed();\n }\n }\n\n extend(other: SourceSpan): SourceSpan {\n return span(this.data.getStart(), other.data.getEnd());\n }\n\n serialize(): SerializedSourceSpan {\n return this.data.serialize();\n }\n\n slice({ skipStart = 0, skipEnd = 0 }: { skipStart?: number; skipEnd?: number }): SourceSpan {\n return span(this.getStart().move(skipStart).data, this.getEnd().move(-skipEnd).data);\n }\n\n sliceStartChars({ skipStart = 0, chars }: { skipStart?: number; chars: number }): SourceSpan {\n return span(this.getStart().move(skipStart).data, this.getStart().move(skipStart + chars).data);\n }\n\n sliceEndChars({ skipEnd = 0, chars }: { skipEnd?: number; chars: number }): SourceSpan {\n return span(this.getEnd().move(skipEnd - chars).data, this.getStart().move(-skipEnd).data);\n }\n}\n\ntype AnySpan = HbsSpan | CharPositionSpan | InvisibleSpan;\n\nclass CharPositionSpan implements SpanData {\n readonly kind = CHAR_OFFSET_KIND;\n\n #locPosSpan: HbsSpan | BROKEN | null = null;\n\n constructor(\n readonly source: Source,\n readonly charPositions: { start: CharPosition; end: CharPosition }\n ) {}\n\n wrap(): SourceSpan {\n return new SourceSpan(this);\n }\n\n asString(): string {\n return this.source.slice(this.charPositions.start.charPos, this.charPositions.end.charPos);\n }\n\n getModule(): string {\n return this.source.module;\n }\n\n getStart(): AnyPosition {\n return this.charPositions.start;\n }\n\n getEnd(): AnyPosition {\n return this.charPositions.end;\n }\n\n locDidUpdate() {\n if (LOCAL_DEBUG) {\n // eslint-disable-next-line no-console\n console.warn(\n `updating a location that came from a CharPosition span doesn't work reliably. Don't try to update locations after the plugin phase`\n );\n }\n }\n\n toHbsSpan(): HbsSpan | null {\n let locPosSpan = this.#locPosSpan;\n\n if (locPosSpan === null) {\n const start = this.charPositions.start.toHbsPos();\n const end = this.charPositions.end.toHbsPos();\n\n if (start === null || end === null) {\n locPosSpan = this.#locPosSpan = BROKEN;\n } else {\n locPosSpan = this.#locPosSpan = new HbsSpan(this.source, {\n start,\n end,\n });\n }\n }\n\n return locPosSpan === BROKEN ? null : locPosSpan;\n }\n\n serialize(): SerializedSourceSpan {\n const {\n start: { charPos: start },\n end: { charPos: end },\n } = this.charPositions;\n\n if (start === end) {\n return start;\n } else {\n return [start, end];\n }\n }\n\n toCharPosSpan(): this {\n return this;\n }\n}\n\nexport class HbsSpan implements SpanData {\n readonly kind = HBS_POSITION_KIND;\n\n #charPosSpan: CharPositionSpan | BROKEN | null = null;\n\n // the source location from Handlebars + AST Plugins -- could be wrong\n #providedHbsLoc: SourceLocation | null;\n\n constructor(\n readonly source: Source,\n readonly hbsPositions: { start: HbsPosition; end: HbsPosition },\n providedHbsLoc: SourceLocation | null = null\n ) {\n this.#providedHbsLoc = providedHbsLoc;\n }\n\n serialize(): SerializedConcreteSourceSpan {\n const charPos = this.toCharPosSpan();\n return charPos === null ? BROKEN_KIND : charPos.wrap().serialize();\n }\n\n wrap(): SourceSpan {\n return new SourceSpan(this);\n }\n\n private updateProvided(pos: SourcePosition, edge: 'start' | 'end') {\n if (this.#providedHbsLoc) {\n this.#providedHbsLoc[edge] = pos;\n }\n\n // invalidate computed character offsets\n this.#charPosSpan = null;\n this.#providedHbsLoc = {\n start: pos,\n end: pos,\n };\n }\n\n locDidUpdate({ start, end }: { start?: SourcePosition; end?: SourcePosition }): void {\n if (start !== undefined) {\n this.updateProvided(start, 'start');\n this.hbsPositions.start = new HbsPosition(this.source, start, null);\n }\n\n if (end !== undefined) {\n this.updateProvided(end, 'end');\n this.hbsPositions.end = new HbsPosition(this.source, end, null);\n }\n }\n\n asString(): string {\n const span = this.toCharPosSpan();\n return span === null ? '' : span.asString();\n }\n\n getModule(): string {\n return this.source.module;\n }\n\n getStart(): AnyPosition {\n return this.hbsPositions.start;\n }\n\n getEnd(): AnyPosition {\n return this.hbsPositions.end;\n }\n\n toHbsLoc(): SourceLocation {\n return {\n start: this.hbsPositions.start.hbsPos,\n end: this.hbsPositions.end.hbsPos,\n };\n }\n\n toHbsSpan(): this {\n return this;\n }\n\n toCharPosSpan(): CharPositionSpan | null {\n let charPosSpan = this.#charPosSpan;\n\n if (charPosSpan === null) {\n const start = this.hbsPositions.start.toCharPos();\n const end = this.hbsPositions.end.toCharPos();\n\n if (start && end) {\n charPosSpan = this.#charPosSpan = new CharPositionSpan(this.source, {\n start,\n end,\n });\n } else {\n charPosSpan = this.#charPosSpan = BROKEN;\n return null;\n }\n }\n\n return charPosSpan === BROKEN ? null : charPosSpan;\n }\n}\n\nclass InvisibleSpan implements SpanData {\n constructor(\n readonly kind: InvisibleKind,\n // whatever was provided, possibly broken\n readonly loc: SourceLocation,\n // if the span represents a synthetic string\n readonly string: string | null = null\n ) {}\n\n serialize(): SerializedConcreteSourceSpan {\n switch (this.kind) {\n case BROKEN_KIND:\n case NON_EXISTENT_KIND:\n return this.kind;\n case INTERNAL_SYNTHETIC_KIND:\n return this.string || '';\n }\n }\n\n wrap(): SourceSpan {\n return new SourceSpan(this);\n }\n\n asString(): string {\n return this.string || '';\n }\n\n locDidUpdate({ start, end }: { start?: SourcePosition; end?: SourcePosition }) {\n if (start !== undefined) {\n this.loc.start = start;\n }\n\n if (end !== undefined) {\n this.loc.end = end;\n }\n }\n\n getModule(): string {\n // TODO: Make this reflect the actual module this span originated from\n return 'an unknown module';\n }\n\n getStart(): AnyPosition {\n return new InvisiblePosition(this.kind, this.loc.start);\n }\n\n getEnd(): AnyPosition {\n return new InvisiblePosition(this.kind, this.loc.end);\n }\n\n toCharPosSpan(): this {\n return this;\n }\n\n toHbsSpan(): null {\n return null;\n }\n\n toHbsLoc(): SourceLocation {\n return BROKEN_LOCATION;\n }\n}\n\nexport const span: MatchFn<SourceSpan> = match((m) =>\n m\n .when(HBS_POSITION_KIND, HBS_POSITION_KIND, (left, right) =>\n new HbsSpan(left.source, {\n start: left,\n end: right,\n }).wrap()\n )\n .when(CHAR_OFFSET_KIND, CHAR_OFFSET_KIND, (left, right) =>\n new CharPositionSpan(left.source, {\n start: left,\n end: right,\n }).wrap()\n )\n .when(CHAR_OFFSET_KIND, HBS_POSITION_KIND, (left, right) => {\n const rightCharPos = right.toCharPos();\n\n if (rightCharPos === null) {\n return new InvisibleSpan(BROKEN_KIND, BROKEN_LOCATION).wrap();\n } else {\n return span(left, rightCharPos);\n }\n })\n .when(HBS_POSITION_KIND, CHAR_OFFSET_KIND, (left, right) => {\n const leftCharPos = left.toCharPos();\n\n if (leftCharPos === null) {\n return new InvisibleSpan(BROKEN_KIND, BROKEN_LOCATION).wrap();\n } else {\n return span(leftCharPos, right);\n }\n })\n .when(IsInvisible, MatchAny, (left) => new InvisibleSpan(left.kind, BROKEN_LOCATION).wrap())\n .when(MatchAny, IsInvisible, (_, right) =>\n new InvisibleSpan(right.kind, BROKEN_LOCATION).wrap()\n )\n);\n\nexport type SerializedConcreteSourceSpan =\n | /** collapsed */ number\n | /** normal */ [start: number, size: number]\n | /** synthetic */ string;\n\n// `string` includes NON_EXISTENT_KIND and BROKEN_KIND\nexport type SerializedSourceSpan = SerializedConcreteSourceSpan;\n","import type { SourcePosition } from '../location';\nimport type { Source } from '../source';\nimport type { BrokenKind, InternalSyntheticKind, NonExistentKind, OffsetKind } from './kinds';\nimport type { SourceSpan } from './span';\n\nimport { UNKNOWN_POSITION } from '../location';\nimport { BROKEN_KIND, CHAR_OFFSET_KIND, HBS_POSITION_KIND } from './kinds';\nimport { match, MatchAny } from './match';\nimport { span } from './span';\n\n/**\n * All positions have these details in common. Most notably, all three kinds of positions can\n * must be able to attempt to convert themselves into {@see CharPosition}.\n */\nexport interface PositionData {\n readonly kind: OffsetKind;\n toCharPos(): CharPosition | null;\n toJSON(): SourcePosition;\n}\n\n/**\n * Used to indicate that an attempt to convert a `SourcePosition` to a character offset failed. It\n * is separate from `null` so that `null` can be used to indicate that the computation wasn't yet\n * attempted (and therefore to cache the failure)\n */\nexport const BROKEN = 'BROKEN';\nexport type BROKEN = 'BROKEN';\n\nexport type AnyPosition = HbsPosition | CharPosition | InvisiblePosition;\n\n/**\n * A `SourceOffset` represents a single position in the source.\n *\n * There are three kinds of backing data for `SourceOffset` objects:\n *\n * - `CharPosition`, which contains a character offset into the raw source string\n * - `HbsPosition`, which contains a `SourcePosition` from the Handlebars AST, which can be\n * converted to a `CharPosition` on demand.\n * - `InvisiblePosition`, which represents a position not in source (@see {InvisiblePosition})\n */\nexport class SourceOffset {\n /**\n * Create a `SourceOffset` from a Handlebars `SourcePosition`. It's stored as-is, and converted\n * into a character offset on demand, which avoids unnecessarily computing the offset of every\n * `SourceLocation`, but also means that broken `SourcePosition`s are not always detected.\n */\n static forHbsPos(source: Source, pos: SourcePosition): SourceOffset {\n return new HbsPosition(source, pos, null).wrap();\n }\n\n /**\n * Create a `SourceOffset` that corresponds to a broken `SourcePosition`. This means that the\n * calling code determined (or knows) that the `SourceLocation` doesn't correspond correctly to\n * any part of the source.\n */\n static broken(pos: SourcePosition = UNKNOWN_POSITION): SourceOffset {\n return new InvisiblePosition(BROKEN_KIND, pos).wrap();\n }\n\n constructor(readonly data: PositionData & AnyPosition) {}\n\n /**\n * Get the character offset for this `SourceOffset`, if possible.\n */\n get offset(): number | null {\n const charPos = this.data.toCharPos();\n return charPos === null ? null : charPos.offset;\n }\n\n /**\n * Compare this offset with another one.\n *\n * If both offsets are `HbsPosition`s, they're equivalent as long as their lines and columns are\n * the same. This avoids computing offsets unnecessarily.\n *\n * Otherwise, two `SourceOffset`s are equivalent if their successfully computed character offsets\n * are the same.\n */\n eql(right: SourceOffset): boolean {\n return eql(this.data, right.data);\n }\n\n /**\n * Create a span that starts from this source offset and ends with another source offset. Avoid\n * computing character offsets if both `SourceOffset`s are still lazy.\n */\n until(other: SourceOffset): SourceSpan {\n return span(this.data, other.data);\n }\n\n /**\n * Create a `SourceOffset` by moving the character position represented by this source offset\n * forward or backward (if `by` is negative), if possible.\n *\n * If this `SourceOffset` can't compute a valid character offset, `move` returns a broken offset.\n *\n * If the resulting character offset is less than 0 or greater than the size of the source, `move`\n * returns a broken offset.\n */\n move(by: number): SourceOffset {\n const charPos = this.data.toCharPos();\n\n if (charPos === null) {\n return SourceOffset.broken();\n } else {\n const result = charPos.offset + by;\n\n if (charPos.source.validate(result)) {\n return new CharPosition(charPos.source, result).wrap();\n } else {\n return SourceOffset.broken();\n }\n }\n }\n\n /**\n * Create a new `SourceSpan` that represents a collapsed range at this source offset. Avoid\n * computing the character offset if it has not already been computed.\n */\n collapsed(): SourceSpan {\n return span(this.data, this.data);\n }\n\n /**\n * Convert this `SourceOffset` into a Handlebars {@see SourcePosition} for compatibility with\n * existing plugins.\n */\n toJSON(): SourcePosition {\n return this.data.toJSON();\n }\n}\n\nexport class CharPosition implements PositionData {\n readonly kind = CHAR_OFFSET_KIND;\n\n /** Computed from char offset */\n _locPos: HbsPosition | BROKEN | null = null;\n\n constructor(\n readonly source: Source,\n readonly charPos: number\n ) {}\n\n /**\n * This is already a `CharPosition`.\n *\n * {@see HbsPosition} for the alternative.\n */\n toCharPos(): this {\n return this;\n }\n\n /**\n * Produce a Handlebars {@see SourcePosition} for this `CharPosition`. If this `CharPosition` was\n * computed using {@see SourceOffset#move}, this will compute the `SourcePosition` for the offset.\n */\n toJSON(): SourcePosition {\n const hbs = this.toHbsPos();\n return hbs === null ? UNKNOWN_POSITION : hbs.toJSON();\n }\n\n wrap(): SourceOffset {\n return new SourceOffset(this);\n }\n\n /**\n * A `CharPosition` always has an offset it can produce without any additional computation.\n */\n get offset(): number {\n return this.charPos;\n }\n\n /**\n * Convert the current character offset to an `HbsPosition`, if it was not already computed. Once\n * a `CharPosition` has computed its `HbsPosition`, it will not need to do compute it again, and\n * the same `CharPosition` is retained when used as one of the ends of a `SourceSpan`, so\n * computing the `HbsPosition` should be a one-time operation.\n */\n toHbsPos(): HbsPosition | null {\n let locPos = this._locPos;\n\n if (locPos === null) {\n const hbsPos = this.source.hbsPosFor(this.charPos);\n\n if (hbsPos === null) {\n this._locPos = locPos = BROKEN;\n } else {\n this._locPos = locPos = new HbsPosition(this.source, hbsPos, this.charPos);\n }\n }\n\n return locPos === BROKEN ? null : locPos;\n }\n}\n\nexport class HbsPosition implements PositionData {\n readonly kind = HBS_POSITION_KIND;\n\n _charPos: CharPosition | BROKEN | null;\n\n constructor(\n readonly source: Source,\n readonly hbsPos: SourcePosition,\n charPos: number | null = null\n ) {\n this._charPos = charPos === null ? null : new CharPosition(source, charPos);\n }\n\n /**\n * Lazily compute the character offset from the {@see SourcePosition}. Once an `HbsPosition` has\n * computed its `CharPosition`, it will not need to do compute it again, and the same\n * `HbsPosition` is retained when used as one of the ends of a `SourceSpan`, so computing the\n * `CharPosition` should be a one-time operation.\n */\n toCharPos(): CharPosition | null {\n let charPos = this._charPos;\n\n if (charPos === null) {\n const charPosNumber = this.source.charPosFor(this.hbsPos);\n\n if (charPosNumber === null) {\n this._charPos = charPos = BROKEN;\n } else {\n this._charPos = charPos = new CharPosition(this.source, charPosNumber);\n }\n }\n\n return charPos === BROKEN ? null : charPos;\n }\n\n /**\n * Return the {@see SourcePosition} that this `HbsPosition` was instantiated with. This operation\n * does not need to compute anything.\n */\n toJSON(): SourcePosition {\n return this.hbsPos;\n }\n\n wrap(): SourceOffset {\n return new SourceOffset(this);\n }\n\n /**\n * This is already an `HbsPosition`.\n *\n * {@see CharPosition} for the alternative.\n */\n toHbsPos(): this {\n return this;\n }\n}\n\nexport class InvisiblePosition implements PositionData {\n constructor(\n readonly kind: BrokenKind | InternalSyntheticKind | NonExistentKind,\n // whatever was provided, possibly broken\n readonly pos: SourcePosition\n ) {}\n\n /**\n * A broken position cannot be turned into a {@see CharacterPosition}.\n */\n toCharPos(): null {\n return null;\n }\n\n /**\n * The serialization of an `InvisiblePosition is whatever Handlebars {@see SourcePosition} was\n * originally identified as broken, non-existent or synthetic.\n *\n * If an `InvisiblePosition` never had an source offset at all, this method returns\n * {@see UNKNOWN_POSITION} for compatibility.\n */\n toJSON(): SourcePosition {\n return this.pos;\n }\n\n wrap(): SourceOffset {\n return new SourceOffset(this);\n }\n\n get offset(): null {\n return null;\n }\n}\n\n/**\n * Compare two {@see AnyPosition} and determine whether they are equal.\n *\n * @see {SourceOffset#eql}\n */\nconst eql = match<boolean>((m) =>\n m\n .when(\n HBS_POSITION_KIND,\n HBS_POSITION_KIND,\n ({ hbsPos: left }, { hbsPos: right }) =>\n left.column === right.column && left.line === right.line\n )\n .when(\n CHAR_OFFSET_KIND,\n CHAR_OFFSET_KIND,\n ({ charPos: left }, { charPos: right }) => left === right\n )\n .when(\n CHAR_OFFSET_KIND,\n HBS_POSITION_KIND,\n ({ offset: left }, right) => left === right.toCharPos()?.offset\n )\n .when(\n HBS_POSITION_KIND,\n CHAR_OFFSET_KIND,\n (left, { offset: right }) => left.toCharPos()?.offset === right\n )\n .when(MatchAny, MatchAny, () => false)\n);\n","import { DEBUG } from '@glimmer/env';\nimport type { Nullable } from '@glimmer/interfaces';\nimport { localAssert, setLocalDebugType } from '@glimmer/debug-util';\n\nimport type { PrecompileOptions } from '../parser/tokenizer-event-handlers';\nimport type { SourceLocation, SourcePosition } from './location';\n\nimport { SourceOffset, SourceSpan } from './span';\n\nexport class Source {\n static from(source: string, options: PrecompileOptions = {}): Source {\n return new Source(source, options.meta?.moduleName);\n }\n\n constructor(\n readonly source: string,\n readonly module = 'an unknown module'\n ) {\n setLocalDebugType('syntax:source', this);\n }\n\n /**\n * Validate that the character offset represents a position in the source string.\n */\n validate(offset: number): boolean {\n return offset >= 0 && offset <= this.source.length;\n }\n\n slice(start: number, end: number): string {\n return this.source.slice(start, end);\n }\n\n offsetFor(line: number, column: number): SourceOffset {\n return SourceOffset.forHbsPos(this, { line, column });\n }\n\n spanFor({ start, end }: Readonly<SourceLocation>): SourceSpan {\n return SourceSpan.forHbsLoc(this, {\n start: { line: start.line, column: start.column },\n end: { line: end.line, column: end.column },\n });\n }\n\n hbsPosFor(offset: number): Nullable<SourcePosition> {\n let seenLines = 0;\n let seenChars = 0;\n\n if (offset > this.source.length) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n while (true) {\n let nextLine = this.source.indexOf('\\n', seenChars);\n\n if (offset <= nextLine || nextLine === -1) {\n return {\n line: seenLines + 1,\n column: offset - seenChars,\n };\n } else {\n seenLines += 1;\n seenChars = nextLine + 1;\n }\n }\n }\n\n charPosFor(position: SourcePosition): number | null {\n let { line, column } = position;\n let sourceString = this.source;\n let sourceLength = sourceString.length;\n let seenLines = 0;\n let seenChars = 0;\n\n while (seenChars < sourceLength) {\n let nextLine = this.source.indexOf('\\n', seenChars);\n if (nextLine === -1) nextLine = this.source.length;\n\n if (seenLines === line - 1) {\n if (seenChars + column > nextLine) return nextLine;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (DEBUG) {\n let roundTrip = this.hbsPosFor(seenChars + column);\n localAssert(roundTrip !== null, `the returned offset failed to round-trip`);\n localAssert(\n roundTrip.line === line,\n `the round-tripped line didn't match the original line`\n );\n localAssert(\n roundTrip.column === column,\n `the round-tripped column didn't match the original column`\n );\n }\n\n return seenChars + column;\n } else if (nextLine === -1) {\n return 0;\n } else {\n seenLines += 1;\n seenChars = nextLine + 1;\n }\n }\n\n return sourceLength;\n }\n}\n","import type { PresentArray } from '@glimmer/interfaces';\nimport { getFirst, getLast, isPresentArray } from '@glimmer/debug-util';\n\nimport type { LocatedWithOptionalSpan, LocatedWithSpan } from './location';\nimport type { SourceOffset } from './span';\n\nimport { SourceSpan } from './span';\n\nexport type HasSpan = SourceSpan | LocatedWithSpan | PresentArray<LocatedWithSpan>;\nexport type MaybeHasSpan = SourceSpan | LocatedWithOptionalSpan | LocatedWithOptionalSpan[] | null;\n\nexport type ToSourceOffset = number | SourceOffset;\n\nexport class SpanList {\n static range(span: PresentArray<HasSourceSpan>): SourceSpan;\n static range(span: HasSourceSpan[], fallback: SourceSpan): SourceSpan;\n static range(span: HasSourceSpan[], fallback: SourceSpan = SourceSpan.NON_EXISTENT): SourceSpan {\n return new SpanList(span.map(loc)).getRangeOffset(fallback);\n }\n\n _span: SourceSpan[];\n\n constructor(span: SourceSpan[] = []) {\n this._span = span;\n }\n\n add(offset: SourceSpan): void {\n this._span.push(offset);\n }\n\n getRangeOffset(fallback: SourceSpan): SourceSpan {\n if (isPresentArray(this._span)) {\n let first = getFirst(this._span);\n let last = getLast(this._span);\n return first.extend(last);\n } else {\n return fallback;\n }\n }\n}\n\nexport type HasSourceSpan = { loc: SourceSpan } | SourceSpan | [HasSourceSpan, ...HasSourceSpan[]];\n\nexport function loc(span: HasSourceSpan): SourceSpan {\n if (Array.isArray(span)) {\n let first = getFirst(span);\n let last = getLast(span);\n return loc(first).extend(loc(last));\n } else if (span instanceof SourceSpan) {\n return span;\n } else {\n return span.loc;\n }\n}\n\nexport type MaybeHasSourceSpan = { loc: SourceSpan } | SourceSpan | MaybeHasSourceSpan[];\n\nexport function hasSpan(span: MaybeHasSourceSpan): span is HasSourceSpan {\n if (Array.isArray(span) && span.length === 0) {\n return false;\n }\n\n return true;\n}\n\nexport function maybeLoc(location: MaybeHasSourceSpan, fallback: SourceSpan): SourceSpan {\n if (hasSpan(location)) {\n return loc(location);\n } else {\n return fallback;\n }\n}\n","import type * as src from './source/api';\n\nexport interface GlimmerSyntaxError extends Error {\n location: src.SourceSpan | null;\n code: string | null;\n}\n\nexport function generateSyntaxError(message: string, location: src.SourceSpan): GlimmerSyntaxError {\n let { module, loc } = location;\n let { line, column } = loc.start;\n\n let code = location.asString();\n let quotedCode = code ? `\\n\\n|\\n| ${code.split('\\n').join('\\n| ')}\\n|\\n\\n` : '';\n\n let error = new Error(\n `${message}: ${quotedCode}(error occurred in '${module}' @ line ${line} : column ${column})`\n ) as GlimmerSyntaxError;\n\n error.name = 'SyntaxError';\n error.location = location;\n error.code = code;\n\n return error;\n}\n","import type * as ASTv1 from './api';\n\n// ensure stays in sync with typing\n// ParentNode and ChildKey types are derived from VisitorKeysMap\nconst visitorKeys = {\n Template: ['body'],\n Block: ['body'],\n\n MustacheStatement: ['path', 'params', 'hash'],\n BlockStatement: ['path', 'params', 'hash', 'program', 'inverse'],\n ElementModifierStatement: ['path', 'params', 'hash'],\n CommentStatement: [],\n MustacheCommentStatement: [],\n ElementNode: ['attributes', 'modifiers', 'children', 'comments'],\n AttrNode: ['value'],\n TextNode: [],\n\n ConcatStatement: ['parts'],\n SubExpression: ['path', 'params', 'hash'],\n PathExpression: [],\n\n StringLiteral: [],\n BooleanLiteral: [],\n NumberLiteral: [],\n NullLiteral: [],\n UndefinedLiteral: [],\n\n Hash: ['pairs'],\n HashPair: ['value'],\n} as const;\n\ntype VisitorKeysMap = typeof visitorKeys;\n\nexport type VisitorKeys = { [P in keyof VisitorKeysMap]: VisitorKeysMap[P][number] };\nexport type VisitorKey<N extends ASTv1.Node> = VisitorKeys[N['type']] & keyof N;\n\nexport default visitorKeys;\n","import type { Nullable } from '@glimmer/interfaces';\n\nimport type * as ASTv1 from '../v1/api';\n\nexport interface TraversalError extends Error {\n constructor: TraversalErrorConstructor;\n key: string;\n node: ASTv1.Node;\n parent: Nullable<ASTv1.Node>;\n stack?: string;\n}\n\nexport interface TraversalErrorConstructor {\n new (\n message: string,\n node: ASTv1.Node,\n parent: Nullable<ASTv1.Node>,\n key: string\n ): TraversalError;\n readonly prototype: TraversalError;\n}\n\nconst TraversalError: TraversalErrorConstructor = (function () {\n TraversalError.prototype = Object.create(Error.prototype);\n\n TraversalError.prototype.constructor = TraversalError;\n\n function TraversalError(\n this: TraversalError,\n message: string,\n node: ASTv1.Node,\n parent: Nullable<ASTv1.Node>,\n key: string\n ) {\n let error = Error.call(this, message);\n\n this.key = key;\n this.message = message;\n this.node = node;\n this.parent = parent;\n\n if (error.stack) {\n this.stack = error.stack;\n }\n }\n\n return TraversalError as unknown as TraversalErrorConstructor;\n})();\n\nexport default TraversalError;\n\nexport function cannotRemoveNode(\n node: ASTv1.Node,\n parent: ASTv1.Node,\n key: string\n): TraversalError {\n return new TraversalError(\n 'Cannot remove a node unless it is part of an array',\n node,\n parent,\n key\n );\n}\n\nexport function cannotReplaceNode(\n node: ASTv1.Node,\n parent: ASTv1.Node,\n key: string\n): TraversalError {\n return new TraversalError(\n 'Cannot replace a node with multiple nodes unless it is part of an array',\n node,\n parent,\n key\n );\n}\n\nexport function cannotReplaceOrRemoveInKeyHandlerYet(\n node: ASTv1.Node,\n key: string\n): TraversalError {\n return new TraversalError(\n 'Replacing and removing in key handlers is not yet supported.',\n node,\n null,\n key\n );\n}\n","import type * as ASTv1 from '../v1/api';\n\nexport default class WalkerPath<N extends ASTv1.Node> {\n node: N;\n parent: WalkerPath<ASTv1.Node> | null;\n parentKey: string | null;\n\n constructor(\n node: N,\n parent: WalkerPath<ASTv1.Node> | null = null,\n parentKey: string | null = null\n ) {\n this.node = node;\n this.parent = parent;\n this.parentKey = parentKey;\n }\n\n get parentNode(): ASTv1.Node | null {\n return this.parent ? this.parent.node : null;\n }\n\n parents(): Iterable<WalkerPath<ASTv1.Node> | null> {\n return {\n [Symbol.iterator]: () => {\n return new PathParentsIterator(this);\n },\n };\n }\n}\n\nclass PathParentsIterator implements Iterator<WalkerPath<ASTv1.Node> | null> {\n path: WalkerPath<ASTv1.Node>;\n\n constructor(path: WalkerPath<ASTv1.Node>) {\n this.path = path;\n }\n\n next() {\n if (this.path.parent) {\n this.path = this.path.parent;\n return { done: false, value: this.path };\n } else {\n return { done: true, value: null };\n }\n }\n}\n","import { deprecate, unwrap } from '@glimmer/debug-util';\n\nimport type * as ASTv1 from '../v1/api';\nimport type { VisitorKey, VisitorKeys } from '../v1/visitor-keys';\nimport type { KeyHandler, KeyTraversal, NodeHandler, NodeTraversal, NodeVisitor } from './visitor';\n\nimport visitorKeys from '../v1/visitor-keys';\nimport {\n cannotRemoveNode,\n cannotReplaceNode,\n cannotReplaceOrRemoveInKeyHandlerYet,\n} from './errors';\nimport WalkerPath from './path';\n\nfunction getEnterFunction<N extends ASTv1.Node>(\n handler: NodeTraversal<N>\n): NodeHandler<N> | undefined;\nfunction getEnterFunction<N extends ASTv1.Node, K extends VisitorKey<N>>(\n handler: KeyTraversal<N, K>\n): KeyHandler<N, K> | undefined;\nfunction getEnterFunction<N extends ASTv1.Node, K extends VisitorKey<N>>(\n handler: NodeTraversal<N> | KeyTraversal<N, K>\n): NodeHandler<N> | KeyHandler<N, K> | undefined {\n if (typeof handler === 'function') {\n return handler;\n } else {\n return handler.enter as NodeHandler<N> | KeyHandler<N, K>;\n }\n}\n\nfunction getExitFunction<N extends ASTv1.Node>(\n handler: NodeTraversal<N>\n): NodeHandler<N> | undefined;\nfunction getExitFunction<N extends ASTv1.Node, K extends VisitorKey<N>>(\n handler: KeyTraversal<N, K>\n): KeyHandler<N, K> | undefined;\nfunction getExitFunction<N extends ASTv1.Node, K extends VisitorKey<N>>(\n handler: NodeTraversal<N> | KeyTraversal<N, K>\n): NodeHandler<N> | KeyHandler<N, K> | undefined {\n if (typeof handler === 'function') {\n return undefined;\n } else {\n return handler.exit as NodeHandler<N> | KeyHandler<N, K>;\n }\n}\n\nfunction getKeyHandler<N extends ASTv1.Node, K extends VisitorKey<N>>(\n handler: NodeTraversal<N>,\n key: K\n): KeyTraversal<N, K> | KeyTraversal<N, VisitorKey<N>> | undefined {\n let keyVisitor = typeof handler !== 'function' ? handler.keys : undefined;\n if (keyVisitor === undefined) return;\n\n let keyHandler = keyVisitor[key];\n if (keyHandler !== undefined) {\n return keyHandler as KeyTraversal<N, K>;\n }\n return keyVisitor.All;\n}\n\nfunction getNodeHandler<N extends ASTv1.Node>(\n visitor: NodeVisitor,\n nodeType: N['type']\n): NodeTraversal<N> | undefined;\nfunction getNodeHandler(\n visitor: NodeVisitor,\n nodeType: 'All'\n): NodeTraversal<ASTv1.Node> | undefined;\nfunction getNodeHandler<N extends ASTv1.Node>(\n visitor: NodeVisitor,\n nodeType: N['type']\n): NodeTraversal<ASTv1.Node> | undefined {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (visitor.Program) {\n if (\n (nodeType === 'Template' && !visitor.Template) ||\n (nodeType === 'Block' && !visitor.Block)\n ) {\n deprecate(\n `The 'Program' visitor node is deprecated. Use 'Template' or 'Block' instead (node was '${nodeType}') `\n );\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return visitor.Program as NodeTraversal<ASTv1.Node>;\n }\n }\n\n let handler = visitor[nodeType];\n if (handler !== undefined) {\n return handler as unknown as NodeTraversal<ASTv1.Node>;\n }\n return visitor.All;\n}\n\nfunction visitNode<N extends ASTv1.Node>(\n visitor: NodeVisitor,\n path: WalkerPath<N>\n): ASTv1.Node | ASTv1.Node[] | undefined | null | void {\n let { node, parent, parentKey } = path;\n\n let handler: NodeTraversal<N> | undefined = getNodeHandler(visitor, node.type);\n let enter: NodeHandler<N> | undefined;\n let exit: NodeHandler<N> | undefined;\n\n if (handler !== undefined) {\n enter = getEnterFunction(handler);\n exit = getExitFunction(handler);\n }\n\n let result: ASTv1.Node | ASTv1.Node[] | undefined | null | void;\n if (enter !== undefined) {\n result = enter(node, path);\n }\n\n if (result !== undefined && result !== null) {\n if (JSON.stringify(node) === JSON.stringify(result)) {\n result = undefined;\n } else if (Array.isArray(result)) {\n visitArray(visitor, result, parent, parentKey);\n return result;\n } else {\n let path = new WalkerPath(result, parent, parentKey);\n return visitNode(visitor, path) || result;\n }\n }\n\n if (result === undefined) {\n let keys = visitorKeys[node.type];\n\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i] as VisitorKeys[N['type']] & keyof N;\n // we know if it has child keys we can widen to a ParentNode\n visitKey(visitor, handler, path, key);\n }\n\n if (exit !== undefined) {\n result = exit(node, path);\n }\n }\n\n return result;\n}\n\nfunction get<N extends ASTv1.Node>(\n node: N,\n key: VisitorKeys[N['type']] & keyof N\n): ASTv1.Node | ASTv1.Node[] | undefined {\n return node[key] as unknown as ASTv1.Node | ASTv1.Node[] | undefined;\n}\n\nfunction set<N extends ASTv1.Node, K extends keyof N>(node: N, key: K, value: N[K]): void {\n node[key] = value;\n}\n\nfunction visitKey<N extends ASTv1.Node>(\n visitor: NodeVisitor,\n handler: NodeTraversal<N> | undefined,\n path: WalkerPath<N>,\n key: VisitorKeys[N['type']] & keyof N\n) {\n let { node } = path;\n\n let value = get(node, key);\n if (!value) {\n return;\n }\n\n let keyEnter: KeyHandler<N, VisitorKeys[N['type']] & keyof N> | undefined;\n let keyExit: KeyHandler<N, VisitorKeys[N['type']] & keyof N> | undefined;\n\n if (handler !== undefined) {\n let keyHandler = getKeyHandler(handler, key);\n if (keyHandler !== undefined) {\n keyEnter = getEnterFunction(keyHandler);\n keyExit = getExitFunction(keyHandler);\n }\n }\n\n if (keyEnter !== undefined) {\n if (keyEnter(node, key) !== undefined) {\n throw cannotReplaceOrRemoveInKeyHandlerYet(node, key);\n }\n }\n\n if (Array.isArray(value)) {\n visitArray(visitor, value, path, key);\n } else {\n let keyPath = new WalkerPath(value, path, key);\n let result = visitNode(visitor, keyPath);\n if (result !== undefined) {\n // TODO: dynamically check the results by having a table of\n // expected node types in value space, not just type space\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n assignKey(node, key, value, result as any);\n }\n }\n\n if (keyExit !== undefined) {\n if (keyExit(node, key) !== undefined) {\n throw cannotReplaceOrRemoveInKeyHandlerYet(node, key);\n }\n }\n}\n\nfunction visitArray(\n visitor: NodeVisitor,\n array: ASTv1.Node[],\n parent: WalkerPath<ASTv1.Node> | null,\n parentKey: string | null\n) {\n for (let i = 0; i < array.length; i++) {\n let node = unwrap(array[i]);\n let path = new WalkerPath(node, parent, parentKey);\n let result = visitNode(visitor, path);\n if (result !== undefined) {\n i += spliceArray(array, i, result) - 1;\n }\n }\n}\n\nfunction assignKey<N extends ASTv1.Node, K extends VisitorKey<N>>(\n node: N,\n key: K,\n value: ASTv1.Node,\n result: N[K] | [N[K]] | null\n) {\n if (result === null) {\n throw cannotRemoveNode(value, node, key);\n } else if (Array.isArray(result)) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (result.length === 1) {\n set(node, key, result[0]);\n } else {\n if (result.length === 0) {\n throw cannotRemoveNode(value, node, key);\n } else {\n throw cannotReplaceNode(value, node, key);\n }\n }\n } else {\n set(node, key, result);\n }\n}\n\nfunction spliceArray(array: ASTv1.Node[], index: number, result: ASTv1.Node | ASTv1.Node[] | null) {\n if (result === null) {\n array.splice(index, 1);\n return 0;\n } else if (Array.isArray(result)) {\n array.splice(index, 1, ...result);\n return result.length;\n } else {\n array.splice(index, 1, result);\n return 1;\n }\n}\n\nexport default function traverse(node: ASTv1.Node, visitor: NodeVisitor): void {\n let path = new WalkerPath(node);\n visitNode(visitor, path);\n}\n","import type { Nullable } from '@glimmer/interfaces';\n\nimport type * as ASTv1 from '../v1/api';\n\nexport type NodeCallback<N extends ASTv1.Node> = (node: N, walker: Walker) => void;\n\nexport default class Walker {\n public stack: unknown[] = [];\n constructor(public order?: unknown) {}\n\n visit<N extends ASTv1.Node>(node: Nullable<N>, visitor: NodeCallback<N>): void {\n if (!node) {\n return;\n }\n\n this.stack.push(node);\n\n if (this.order === 'post') {\n this.children(node, visitor);\n visitor(node, this);\n } else {\n visitor(node, this);\n this.children(node, visitor);\n }\n\n this.stack.pop();\n }\n\n children<N extends ASTv1.Node>(\n node: N & ASTv1.Node,\n callback: NodeCallback<N & ASTv1.Node>\n ): void {\n switch (node.type) {\n case 'Block':\n case 'Template':\n walkBody(this, node.body, callback);\n return;\n case 'ElementNode':\n walkBody(this, node.children, callback);\n return;\n case 'BlockStatement':\n this.visit(node.program, callback);\n this.visit(node.inverse || null, callback);\n return;\n default:\n return;\n }\n }\n}\n\nfunction walkBody(\n walker: Walker,\n body: ASTv1.Statement[],\n callback: NodeCallback<ASTv1.Statement>\n) {\n for (const child of body) {\n walker.visit(child, callback);\n }\n}\n","import type * as ASTv1 from './v1/api';\nimport type * as HBS from './v1/handlebars-ast';\n\nexport function childrenFor(\n node: ASTv1.Block | ASTv1.Template | ASTv1.ElementNode\n): ASTv1.TopLevelStatement[] {\n switch (node.type) {\n case 'Block':\n case 'Template':\n return node.body;\n case 'ElementNode':\n return node.children;\n }\n}\n\nexport function appendChild(\n parent: ASTv1.Block | ASTv1.Template | ASTv1.ElementNode,\n node: ASTv1.Statement\n): void {\n childrenFor(parent).push(node);\n}\n\nexport function isHBSLiteral(path: HBS.Expression): path is HBS.Literal;\nexport function isHBSLiteral(path: ASTv1.Expression): path is ASTv1.Literal;\nexport function isHBSLiteral(\n path: HBS.Expression | ASTv1.Expression\n): path is HBS.Literal | ASTv1.Literal {\n return (\n path.type === 'StringLiteral' ||\n path.type === 'BooleanLiteral' ||\n path.type === 'NumberLiteral' ||\n path.type === 'NullLiteral' ||\n path.type === 'UndefinedLiteral'\n );\n}\n\nexport function printLiteral(literal: ASTv1.Literal): string {\n if (literal.type === 'UndefinedLiteral') {\n return 'undefined';\n } else {\n return JSON.stringify(literal.value);\n }\n}\n\nexport function isUpperCase(tag: string): boolean {\n return tag[0] === tag[0]?.toUpperCase() && tag[0] !== tag[0]?.toLowerCase();\n}\n\nexport function isLowerCase(tag: string): boolean {\n return tag[0] === tag[0]?.toLowerCase() && tag[0] !== tag[0]?.toUpperCase();\n}\n","import type { Dict, Maybe, Nullable } from '@glimmer/interfaces';\nimport { asPresentArray, deprecate, isPresentArray, localAssert } from '@glimmer/debug-util';\n\nimport type { SourceLocation, SourcePosition } from '../source/location';\nimport type * as ASTv1 from './api';\n\nimport { isVoidTag } from '../generation/printer';\nimport { SYNTHETIC_LOCATION } from '../source/location';\nimport { Source } from '../source/source';\nimport { SourceSpan } from '../source/span';\nimport b from './parser-builders';\n\nlet _SOURCE: Source | undefined;\n\nfunction SOURCE(): Source {\n if (!_SOURCE) {\n _SOURCE = new Source('', '(synthetic)');\n }\n\n return _SOURCE;\n}\n\n// const SOURCE = new Source('', '(tests)');\n\n// Statements\n\nexport type BuilderHead = string | ASTv1.CallableExpression;\nexport type TagDescriptor =\n | string\n | ASTv1.PathExpression\n | { path: ASTv1.PathExpression; selfClosing?: boolean }\n | { name: string; selfClosing?: boolean };\n\nfunction buildMustache(\n path: BuilderHead | ASTv1.Literal,\n params: ASTv1.Expression[] = [],\n hash: ASTv1.Hash = buildHash([]),\n trusting = false,\n loc?: SourceLocation,\n strip?: ASTv1.StripFlags\n): ASTv1.MustacheStatement {\n return b.mustache({\n path: buildPath(path),\n params,\n hash,\n trusting,\n strip,\n loc: buildLoc(loc || null),\n });\n}\n\ntype PossiblyDeprecatedBlock = ASTv1.Block | ASTv1.Template;\n\nfunction buildBlock(\n path: BuilderHead,\n params: Nullable<ASTv1.Expression[]>,\n hash: Nullable<ASTv1.Hash>,\n _defaultBlock: PossiblyDeprecatedBlock,\n _elseBlock: Nullable<PossiblyDeprecatedBlock> = null,\n loc?: SourceLocation,\n openStrip?: ASTv1.StripFlags,\n inverseStrip?: ASTv1.StripFlags,\n closeStrip?: ASTv1.StripFlags\n): ASTv1.BlockStatement {\n let defaultBlock: ASTv1.Block;\n let elseBlock: Nullable<ASTv1.Block> = null;\n\n if (_defaultBlock.type === 'Template') {\n deprecate(`b.program is deprecated. Use b.blockItself instead.`);\n defaultBlock = b.blockItself({\n params: buildBlockParams(_defaultBlock.blockParams),\n body: _defaultBlock.body,\n loc: _defaultBlock.loc,\n });\n } else {\n defaultBlock = _defaultBlock;\n }\n\n if (_elseBlock?.type === 'Template') {\n deprecate(`b.program is deprecated. Use b.blockItself instead.`);\n localAssert(_elseBlock.blockParams.length === 0, '{{else}} block cannot have block params');\n\n elseBlock = b.blockItself({\n params: [],\n body: _elseBlock.body,\n loc: _elseBlock.loc,\n });\n } else {\n elseBlock = _elseBlock;\n }\n\n return b.block({\n path: buildPath(path),\n params: params || [],\n hash: hash || buildHash([]),\n defaultBlock,\n elseBlock,\n loc: buildLoc(loc || null),\n openStrip,\n inverseStrip,\n closeStrip,\n });\n}\n\nfunction buildElementModifier(\n path: BuilderHead,\n params?: ASTv1.Expression[],\n hash?: ASTv1.Hash,\n loc?: Nullable<SourceLocation>\n): ASTv1.ElementModifierStatement {\n return b.elementModifier({\n path: buildPath(path),\n params: params || [],\n hash: hash || buildHash([]),\n loc: buildLoc(loc || null),\n });\n}\n\nfunction buildComment(value: string, loc?: SourceLocation): ASTv1.CommentStatement {\n return b.comment({\n value: value,\n loc: buildLoc(loc || null),\n });\n}\n\nfunction buildMustacheComment(value: string, loc?: SourceLocation): ASTv1.MustacheCommentStatement {\n return b.mustacheComment({\n value: value,\n loc: buildLoc(loc || null),\n });\n}\n\nfunction buildConcat(\n parts: (ASTv1.TextNode | ASTv1.MustacheStatement)[],\n loc?: SourceLocation\n): ASTv1.ConcatStatement {\n if (!isPresentArray(parts)) {\n throw new Error(`b.concat requires at least one part`);\n }\n\n return b.concat({\n parts,\n loc: buildLoc(loc || null),\n });\n}\n\n// Nodes\n\nexport type ElementParts =\n | ['attrs', ...AttrSexp[]]\n | ['modifiers', ...ModifierSexp[]]\n | ['body', ...ASTv1.Statement[]]\n | ['comments', ...ElementComment[]]\n | ['as', ...string[]]\n | ['loc', SourceLocation];\n\nexport type PathSexp = string | ['path', string, LocSexp?];\n\nexport type ModifierSexp =\n | string\n | [PathSexp, LocSexp?]\n | [PathSexp, ASTv1.Expression[], LocSexp?]\n | [PathSexp, ASTv1.Expression[], Dict<ASTv1.Expression>, LocSexp?];\n\nexport type AttrSexp = [string, ASTv1.AttrNode['value'] | string, LocSexp?];\n\nexport type LocSexp = ['loc', SourceLocation];\n\nexport type ElementComment = ASTv1.MustacheCommentStatement | SourceLocation | string;\n\nexport type SexpValue =\n | string\n | ASTv1.Expression[]\n | Dict<ASTv1.Expression>\n | LocSexp\n | PathSexp\n | undefined;\n\nexport interface BuildElementOptions {\n attrs?: ASTv1.AttrNode[];\n modifiers?: ASTv1.ElementModifierStatement[];\n children?: ASTv1.Statement[];\n comments?: ASTv1.MustacheCommentStatement[];\n blockParams?: ASTv1.VarHead[] | string[];\n openTag?: SourceLocation;\n closeTag?: Maybe<SourceLocation>;\n loc?: SourceLocation;\n}\n\nfunction buildElement(tag: TagDescriptor, options: BuildElementOptions = {}): ASTv1.ElementNode {\n let {\n attrs,\n blockParams,\n modifiers,\n comments,\n children,\n openTag,\n closeTag: _closeTag,\n loc,\n } = options;\n\n // this is used for backwards compat, prior to `selfClosing` being part of the ElementNode AST\n let path: ASTv1.PathExpression;\n let selfClosing: boolean | undefined;\n\n if (typeof tag === 'string') {\n if (tag.endsWith('/')) {\n path = buildPath(tag.slice(0, -1));\n selfClosing = true;\n } else {\n path = buildPath(tag);\n }\n } else if ('type' in tag) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- supports JS users\n localAssert(tag.type === 'PathExpression', `Invalid tag type ${tag.type}`);\n path = tag;\n } else if ('path' in tag) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- supports JS users\n localAssert(tag.path.type === 'PathExpression', `Invalid tag type ${tag.path.type}`);\n path = tag.path;\n selfClosing = tag.selfClosing;\n } else {\n path = buildPath(tag.name);\n selfClosing = tag.selfClosing;\n }\n\n if (selfClosing) {\n localAssert(\n _closeTag === null || _closeTag === undefined,\n 'Cannot build a self-closing tag with a closeTag source location'\n );\n }\n\n let params = blockParams?.map((param) => {\n if (typeof param === 'string') {\n return buildVar(param);\n } else {\n return param;\n }\n });\n\n let closeTag: Nullable<SourceSpan> = null;\n\n if (_closeTag) {\n closeTag = buildLoc(_closeTag);\n } else if (_closeTag === undefined) {\n closeTag = selfClosing || isVoidTag(path.original) ? null : buildLoc(null);\n }\n\n return b.element({\n path,\n selfClosing: selfClosing || false,\n attributes: attrs || [],\n params: params || [],\n modifiers: modifiers || [],\n comments: comments || [],\n children: children || [],\n openTag: buildLoc(openTag || null),\n closeTag,\n loc: buildLoc(loc || null),\n });\n}\n\nfunction buildAttr(name: string, value: ASTv1.AttrValue, loc?: SourceLocation): ASTv1.AttrNode {\n return b.attr({\n name: name,\n value: value,\n loc: buildLoc(loc || null),\n });\n}\n\nfunction buildText(chars = '', loc?: SourceLocation): ASTv1.TextNode {\n return b.text({\n chars,\n loc: buildLoc(loc || null),\n });\n}\n\n// Expressions\n\nfunction buildSexpr(\n path: BuilderHead,\n params: ASTv1.Expression[] = [],\n hash: ASTv1.Hash = buildHash([]),\n loc?: SourceLocation\n): ASTv1.SubExpression {\n return b.sexpr({\n path: buildPath(path),\n params,\n hash,\n loc: buildLoc(loc || null),\n });\n}\n\nfunction buildHead(original: string, loc?: SourceLocation): ASTv1.PathExpression {\n let [head, ...tail] = asPresentArray(original.split('.'));\n let headNode = b.head({ original: head, loc: buildLoc(loc || null) });\n return b.path({ head: headNode, tail, loc: buildLoc(loc || null) });\n}\n\nfunction buildThis(loc?: SourceLocation): ASTv1.ThisHead {\n return b.this({ loc: buildLoc(loc || null) });\n}\n\nfunction buildAtName(name: string, loc?: SourceLocation): ASTv1.AtHead {\n return b.atName({ name, loc: buildLoc(loc || null) });\n}\n\nfunction buildVar(name: string, loc?: SourceLocation): ASTv1.VarHead {\n return b.var({ name, loc: buildLoc(loc || null) });\n}\n\nfunction buildHeadFromString(original: string, loc?: SourceLocation): ASTv1.PathHead {\n return b.head({ original, loc: buildLoc(loc || null) });\n}\n\nfunction buildCleanPath(\n head: ASTv1.PathHead,\n tail: string[] = [],\n loc?: SourceLocation\n): ASTv1.PathExpression {\n return b.path({ head, tail, loc: buildLoc(loc || null) });\n}\n\nfunction buildPath(\n path: ASTv1.PathExpression | string | { head: string; tail: string[] },\n loc?: SourceLocation\n): ASTv1.PathExpression;\nfunction buildPath(path: BuilderHead, loc?: SourceLocation): ASTv1.CallableExpression;\nfunction buildPath(\n path: BuilderHead | ASTv1.Literal | ASTv1.Expression,\n loc?: SourceLocation\n): ASTv1.Expression;\nfunction buildPath(\n path: BuilderHead | ASTv1.Expression | { head: string; tail: string[] },\n loc?: SourceLocation\n): ASTv1.Expression {\n let span = buildLoc(loc || null);\n\n if (typeof path !== 'string') {\n if ('type' in path) {\n return path;\n } else {\n localAssert(\n path.head.indexOf('.') === -1,\n `builder.path({ head, tail }) should not be called with a head with dots in it`\n );\n\n let { head, tail } = path;\n\n return b.path({\n head: b.head({ original: head, loc: span.sliceStartChars({ chars: head.length }) }),\n tail,\n loc: buildLoc(loc || null),\n });\n }\n }\n\n let { head, tail } = buildHead(path, span);\n\n return b.path({ head, tail, loc: span });\n}\n\nfunction buildLiteral<T extends ASTv1.Literal>(\n type: T['type'],\n value: T['value'],\n loc?: SourceLocation\n): T {\n return b.literal({\n type,\n value,\n loc: buildLoc(loc || null),\n });\n}\n\n// Miscellaneous\n\nfunction buildHash(pairs: ASTv1.HashPair[] = [], loc?: SourceLocation): ASTv1.Hash {\n return b.hash({\n pairs,\n loc: buildLoc(loc || null),\n });\n}\n\nfunction buildPair(key: string, value: ASTv1.Expression, loc?: SourceLocation): ASTv1.HashPair {\n return b.pair({\n key,\n value,\n loc: buildLoc(loc || null),\n });\n}\n\nfunction buildProgram(\n body?: ASTv1.Statement[],\n blockParams?: string[],\n loc?: SourceLocation\n): ASTv1.Template | ASTv1.Block {\n deprecate(`b.program is deprecated. Use b.template or b.blockItself instead.`);\n\n if (blockParams && blockParams.length) {\n return buildBlockItself(body, blockParams, false, loc);\n } else {\n return buildTemplate(body, [], loc);\n }\n}\n\nfunction buildBlockParams(params: ReadonlyArray<ASTv1.VarHead | string>): ASTv1.VarHead[] {\n return params.map((p) =>\n typeof p === 'string' ? b.var({ name: p, loc: SourceSpan.synthetic(p) }) : p\n );\n}\n\nfunction buildBlockItself(\n body: ASTv1.Statement[] = [],\n params: Array<ASTv1.VarHead | string> = [],\n chained = false,\n loc?: SourceLocation\n): ASTv1.Block {\n return b.blockItself({\n body,\n params: buildBlockParams(params),\n chained,\n loc: buildLoc(loc || null),\n });\n}\n\nfunction buildTemplate(\n body: ASTv1.Statement[] = [],\n blockParams: string[] = [],\n loc?: SourceLocation\n): ASTv1.Template {\n return b.template({\n body,\n blockParams,\n loc: buildLoc(loc || null),\n });\n}\n\nfunction buildPosition(line: number, column: number): SourcePosition {\n return b.pos({\n line,\n column,\n });\n}\n\nfunction buildLoc(loc: Nullable<SourceLocation>): SourceSpan;\nfunction buildLoc(\n startLine: number,\n startColumn: number,\n endLine?: number,\n endColumn?: number,\n source?: string\n): SourceSpan;\nfunction buildLoc(\n ...args:\n | [Nullable<SourceLocation>]\n | [\n startLine: number,\n startColumn: number,\n endLine?: number | undefined,\n endColumn?: number | undefined,\n source?: string | undefined,\n ]\n): SourceSpan {\n if (args.length === 1) {\n let loc = args[0];\n\n if (loc && typeof loc === 'object') {\n return SourceSpan.forHbsLoc(SOURCE(), loc);\n } else {\n return SourceSpan.forHbsLoc(SOURCE(), SYNTHETIC_LOCATION);\n }\n } else {\n let [startLine, startColumn, endLine, endColumn, _source] = args;\n let source = _source ? new Source('', _source) : SOURCE();\n\n return SourceSpan.forHbsLoc(source, {\n start: {\n line: startLine,\n column: startColumn,\n },\n end: {\n line: endLine || startLine,\n column: endColumn || startColumn,\n },\n });\n }\n}\n\nexport default {\n mustache: buildMustache,\n block: buildBlock,\n comment: buildComment,\n mustacheComment: buildMustacheComment,\n element: buildElement,\n elementModifier: buildElementModifier,\n attr: buildAttr,\n text: buildText,\n sexpr: buildSexpr,\n\n concat: buildConcat,\n hash: buildHash,\n pair: buildPair,\n literal: buildLiteral,\n program: buildProgram,\n blockItself: buildBlockItself,\n template: buildTemplate,\n loc: buildLoc,\n pos: buildPosition,\n\n path: buildPath,\n\n fullPath: buildCleanPath,\n head: buildHeadFromString,\n at: buildAtName,\n var: buildVar,\n this: buildThis,\n\n string: literal('StringLiteral') as (value: string) => ASTv1.StringLiteral,\n boolean: literal('BooleanLiteral') as (value: boolean) => ASTv1.BooleanLiteral,\n number: literal('NumberLiteral') as (value: number) => ASTv1.NumberLiteral,\n undefined(): ASTv1.UndefinedLiteral {\n return buildLiteral('UndefinedLiteral', undefined);\n },\n null(): ASTv1.NullLiteral {\n return buildLiteral('NullLiteral', null);\n },\n};\n\ntype BuildLiteral<T extends ASTv1.Literal> = (value: T['value']) => T;\n\nfunction literal<T extends ASTv1.Literal>(type: T['type']): BuildLiteral<T> {\n return function (value: T['value'], loc?: SourceLocation): T {\n return buildLiteral(type, value, loc);\n };\n}\n","import type { PresentArray } from '@glimmer/interfaces';\nimport { asPresentArray, deprecate } from '@glimmer/debug-util';\n\nimport type * as ASTv1 from './nodes-v1';\n\nimport b from './public-builders';\n\nexport type MustacheStatementParams = Omit<ASTv1.MustacheStatement, 'type' | 'escaped'>;\n\nexport function buildLegacyMustache({\n path,\n params,\n hash,\n trusting,\n strip,\n loc,\n}: MustacheStatementParams): ASTv1.MustacheStatement {\n const node = {\n type: 'MustacheStatement',\n path,\n params,\n hash,\n trusting,\n strip,\n loc,\n };\n\n Object.defineProperty(node, 'escaped', {\n enumerable: false,\n get(this: typeof node): boolean {\n deprecate(`The escaped property on mustache nodes is deprecated, use trusting instead`);\n return !this.trusting;\n },\n set(this: typeof node, value: boolean) {\n deprecate(`The escaped property on mustache nodes is deprecated, use trusting instead`);\n this.trusting = !value;\n },\n });\n\n return node as ASTv1.MustacheStatement;\n}\n\nexport type PathExpressionParams = Omit<ASTv1.MinimalPathExpression, 'type'>;\n\nexport function buildLegacyPath({ head, tail, loc }: PathExpressionParams): ASTv1.PathExpression {\n const node = {\n type: 'PathExpression',\n head,\n tail,\n get original() {\n return [this.head.original, ...this.tail].join('.');\n },\n set original(value: string) {\n let [head, ...tail] = asPresentArray(value.split('.'));\n this.head = b.head(head, this.head.loc);\n this.tail = tail;\n },\n loc,\n };\n\n Object.defineProperty(node, 'parts', {\n enumerable: false,\n get(this: { original: string }): readonly string[] {\n deprecate(`The parts property on path nodes is deprecated, use head and tail instead`);\n let parts = asPresentArray(this.original.split('.'));\n\n if (parts[0] === 'this') {\n // parts does not include `this`\n parts.shift();\n } else if (parts[0].startsWith('@')) {\n // parts does not include leading `@`\n parts[0] = parts[0].slice(1);\n }\n\n return Object.freeze(parts);\n },\n set(this: { head: ASTv1.PathHead; original: string }, values: PresentArray<string>) {\n deprecate(`The parts property on mustache nodes is deprecated, use head and tail instead`);\n\n let parts = [...values];\n\n // you are not supposed to already have `this` or `@` in the parts, but since this is\n // deprecated anyway, we will infer what you meant and allow it\n if (parts[0] !== 'this' && !parts[0]?.startsWith('@')) {\n if (this.head.type === 'ThisHead') {\n parts.unshift('this');\n } else if (this.head.type === 'AtHead') {\n parts[0] = `@${parts[0]}`;\n }\n }\n\n this.original = parts.join('.');\n },\n });\n\n Object.defineProperty(node, 'this', {\n enumerable: false,\n get(this: typeof node): boolean {\n deprecate(`The this property on path nodes is deprecated, use head.type instead`);\n return this.head.type === 'ThisHead';\n },\n });\n\n Object.defineProperty(node, 'data', {\n enumerable: false,\n get(this: typeof node): boolean {\n deprecate(`The data property on path nodes is deprecated, use head.type instead`);\n return this.head.type === 'AtHead';\n },\n });\n\n return node as ASTv1.PathExpression;\n}\n\nexport function buildLegacyLiteral<T extends ASTv1.Literal>({\n type,\n value,\n loc,\n}: {\n type: T['type'];\n value: T['value'];\n loc: T['loc'];\n}): T {\n const node = {\n type,\n value,\n loc,\n };\n\n Object.defineProperty(node, 'original', {\n enumerable: false,\n get(this: typeof node): T['original'] {\n deprecate(`The original property on literal nodes is deprecated, use value instead`);\n return this.value;\n },\n set(this: typeof node, value: T['original']) {\n deprecate(`The original property on literal nodes is deprecated, use value instead`);\n this.value = value;\n },\n });\n\n return node as T;\n}\n","import type { Nullable, Optional, PresentArray } from '@glimmer/interfaces';\nimport { localAssert } from '@glimmer/debug-util';\n\nimport type * as ASTv1 from './api';\n\nimport { SourceSpan } from '../source/span';\nimport { buildLegacyLiteral, buildLegacyMustache, buildLegacyPath } from './legacy-interop';\n\nconst DEFAULT_STRIP = {\n close: false,\n open: false,\n};\n\n/**\n * The Parser Builder differentiates from the public builder API by:\n *\n * 1. Offering fewer different ways to instantiate nodes\n * 2. Mandating source locations\n */\nclass Builders {\n pos({ line, column }: { line: number; column: number }) {\n return {\n line,\n column,\n };\n }\n\n blockItself({\n body,\n params,\n chained = false,\n loc,\n }: {\n body: ASTv1.Statement[];\n params: ASTv1.VarHead[];\n chained?: Optional<boolean>;\n loc: SourceSpan;\n }): ASTv1.Block {\n return {\n type: 'Block',\n body,\n params,\n get blockParams() {\n return this.params.map((p) => p.name);\n },\n set blockParams(params: string[]) {\n this.params = params.map((name) => {\n return b.var({ name, loc: SourceSpan.synthetic(name) });\n });\n },\n chained,\n loc,\n };\n }\n\n template({\n body,\n blockParams,\n loc,\n }: {\n body: ASTv1.Statement[];\n blockParams: string[];\n loc: SourceSpan;\n }): ASTv1.Template {\n return {\n type: 'Template',\n body,\n blockParams,\n loc,\n };\n }\n\n mustache({\n path,\n params,\n hash,\n trusting,\n loc,\n strip = DEFAULT_STRIP,\n }: {\n path: ASTv1.Expression;\n params: ASTv1.Expression[];\n hash: ASTv1.Hash;\n trusting: boolean;\n loc: SourceSpan;\n strip?: Optional<ASTv1.StripFlags>;\n }): ASTv1.MustacheStatement {\n return buildLegacyMustache({\n path,\n params,\n hash,\n trusting,\n strip,\n loc,\n });\n }\n\n block({\n path,\n params,\n hash,\n defaultBlock,\n elseBlock = null,\n loc,\n openStrip = DEFAULT_STRIP,\n inverseStrip = DEFAULT_STRIP,\n closeStrip = DEFAULT_STRIP,\n }: {\n path: ASTv1.PathExpression | ASTv1.SubExpression;\n params: ASTv1.Expression[];\n hash: ASTv1.Hash;\n defaultBlock: ASTv1.Block;\n elseBlock: Nullable<ASTv1.Block>;\n loc: SourceSpan;\n openStrip?: Optional<ASTv1.StripFlags>;\n inverseStrip?: Optional<ASTv1.StripFlags>;\n closeStrip?: Optional<ASTv1.StripFlags>;\n }): ASTv1.BlockStatement {\n return {\n type: 'BlockStatement',\n path: path,\n params,\n hash,\n program: defaultBlock,\n inverse: elseBlock,\n loc,\n openStrip,\n inverseStrip,\n closeStrip,\n };\n }\n\n comment({ value, loc }: { value: string; loc: SourceSpan }): ASTv1.CommentStatement {\n return {\n type: 'CommentStatement',\n value,\n loc,\n };\n }\n\n mustacheComment({\n value,\n loc,\n }: {\n value: string;\n loc: SourceSpan;\n }): ASTv1.MustacheCommentStatement {\n return {\n type: 'MustacheCommentStatement',\n value,\n loc,\n };\n }\n\n concat({\n parts,\n loc,\n }: {\n parts: PresentArray<ASTv1.TextNode | ASTv1.MustacheStatement>;\n loc: SourceSpan;\n }): ASTv1.ConcatStatement {\n return {\n type: 'ConcatStatement',\n parts,\n loc,\n };\n }\n\n element({\n path,\n selfClosing,\n attributes,\n modifiers,\n params,\n comments,\n children,\n openTag,\n closeTag,\n loc,\n }: {\n path: ASTv1.PathExpression;\n selfClosing: boolean;\n attributes: ASTv1.AttrNode[];\n modifiers: ASTv1.ElementModifierStatement[];\n params: ASTv1.VarHead[];\n children: ASTv1.Statement[];\n comments: ASTv1.MustacheCommentStatement[];\n openTag: SourceSpan;\n closeTag: Nullable<SourceSpan>;\n loc: SourceSpan;\n }): ASTv1.ElementNode {\n let _selfClosing = selfClosing;\n\n return {\n type: 'ElementNode',\n path,\n attributes,\n modifiers,\n params,\n comments,\n children,\n openTag,\n closeTag,\n loc,\n get tag() {\n return this.path.original;\n },\n set tag(name: string) {\n this.path.original = name;\n },\n get blockParams() {\n return this.params.map((p) => p.name);\n },\n set blockParams(params: string[]) {\n this.params = params.map((name) => {\n return b.var({ name, loc: SourceSpan.synthetic(name) });\n });\n },\n get selfClosing() {\n return _selfClosing;\n },\n set selfClosing(selfClosing: boolean) {\n _selfClosing = selfClosing;\n\n if (selfClosing) {\n this.closeTag = null;\n } else {\n this.closeTag = SourceSpan.synthetic(`</${this.tag}>`);\n }\n },\n };\n }\n\n elementModifier({\n path,\n params,\n hash,\n loc,\n }: {\n path: ASTv1.PathExpression | ASTv1.SubExpression;\n params: ASTv1.Expression[];\n hash: ASTv1.Hash;\n loc: SourceSpan;\n }): ASTv1.ElementModifierStatement {\n return {\n type: 'ElementModifierStatement',\n path,\n params,\n hash,\n loc,\n };\n }\n\n attr({\n name,\n value,\n loc,\n }: {\n name: string;\n value: ASTv1.AttrNode['value'];\n loc: SourceSpan;\n }): ASTv1.AttrNode {\n return {\n type: 'AttrNode',\n name: name,\n value: value,\n loc,\n };\n }\n\n text({ chars, loc }: { chars: string; loc: SourceSpan }): ASTv1.TextNode {\n return {\n type: 'TextNode',\n chars,\n loc,\n };\n }\n\n sexpr({\n path,\n params,\n hash,\n loc,\n }: {\n path: ASTv1.PathExpression | ASTv1.SubExpression;\n params: ASTv1.Expression[];\n hash: ASTv1.Hash;\n loc: SourceSpan;\n }): ASTv1.SubExpression {\n return {\n type: 'SubExpression',\n path,\n params,\n hash,\n loc,\n };\n }\n\n path({\n head,\n tail,\n loc,\n }: {\n head: ASTv1.PathHead;\n tail: string[];\n loc: SourceSpan;\n }): ASTv1.PathExpression {\n return buildLegacyPath({ head, tail, loc });\n }\n\n head({ original, loc }: { original: string; loc: SourceSpan }): ASTv1.PathHead {\n if (original === 'this') {\n return this.this({ loc });\n }\n if (original[0] === '@') {\n return this.atName({ name: original, loc });\n } else {\n return this.var({ name: original, loc });\n }\n }\n\n this({ loc }: { loc: SourceSpan }): ASTv1.ThisHead {\n return {\n type: 'ThisHead',\n get original() {\n return 'this' as const;\n },\n loc,\n };\n }\n\n atName({ name, loc }: { name: string; loc: SourceSpan }): ASTv1.AtHead {\n let _name = '';\n\n const node = {\n type: 'AtHead' as const,\n get name() {\n return _name;\n },\n set name(value) {\n localAssert(value[0] === '@', `call builders.at() with a string that starts with '@'`);\n localAssert(\n value.indexOf('.') === -1,\n `builder.at() should not be called with a name with dots in it`\n );\n _name = value;\n },\n get original() {\n return this.name;\n },\n set original(value) {\n this.name = value;\n },\n loc,\n };\n\n // trigger the assertions\n node.name = name;\n\n return node;\n }\n\n var({ name, loc }: { name: string; loc: SourceSpan }): ASTv1.VarHead {\n let _name = '';\n\n const node = {\n type: 'VarHead' as const,\n get name() {\n return _name;\n },\n set name(value) {\n localAssert(\n value !== 'this',\n `You called builders.var() with 'this'. Call builders.this instead`\n );\n localAssert(\n value[0] !== '@',\n `You called builders.var() with '${name}'. Call builders.at('${name}') instead`\n );\n localAssert(\n value.indexOf('.') === -1,\n `builder.var() should not be called with a name with dots in it`\n );\n _name = value;\n },\n get original() {\n return this.name;\n },\n set original(value) {\n this.name = value;\n },\n loc,\n };\n\n // trigger the assertions\n node.name = name;\n\n return node;\n }\n\n hash({ pairs, loc }: { pairs: ASTv1.HashPair[]; loc: SourceSpan }): ASTv1.Hash {\n return {\n type: 'Hash',\n pairs,\n loc,\n };\n }\n\n pair({\n key,\n value,\n loc,\n }: {\n key: string;\n value: ASTv1.Expression;\n loc: SourceSpan;\n }): ASTv1.HashPair {\n return {\n type: 'HashPair',\n key,\n value,\n loc,\n };\n }\n\n literal<T extends ASTv1.Literal>({\n type,\n value,\n loc,\n }: {\n type: T['type'];\n value: T['value'];\n loc: SourceSpan;\n }): T {\n return buildLegacyLiteral({ type, value, loc });\n }\n}\n\nconst b = new Builders();\n\nexport default b;\n","import type { Nullable } from '@glimmer/interfaces';\nimport { asPresentArray, expect, getLast, localAssert, unwrap } from '@glimmer/debug-util';\nimport { assign } from '@glimmer/util';\nimport {\n EntityParser,\n EventedTokenizer,\n HTML5NamedCharRefs as namedCharRefs,\n} from 'simple-html-tokenizer';\n\nimport type * as src from './source/api';\nimport type * as ASTv1 from './v1/api';\nimport type * as HBS from './v1/handlebars-ast';\n\nexport type ParserNodeBuilder<N extends { loc: src.SourceSpan }> = Omit<N, 'loc'> & {\n start: src.SourceOffset;\n};\n\nexport interface StartTag {\n readonly type: 'StartTag';\n name: string;\n nameStart: Nullable<src.SourceOffset>;\n nameEnd: Nullable<src.SourceOffset>;\n readonly attributes: ASTv1.AttrNode[];\n readonly modifiers: ASTv1.ElementModifierStatement[];\n readonly comments: ASTv1.MustacheCommentStatement[];\n readonly params: ASTv1.VarHead[];\n selfClosing: boolean;\n readonly loc: src.SourceSpan;\n}\n\nexport interface EndTag {\n readonly type: 'EndTag';\n name: string;\n readonly loc: src.SourceSpan;\n}\n\nexport interface Attribute {\n name: string;\n currentPart: ASTv1.TextNode | null;\n parts: (ASTv1.MustacheStatement | ASTv1.TextNode)[];\n isQuoted: boolean;\n isDynamic: boolean;\n start: src.SourceOffset;\n valueSpan: src.SourceSpan;\n}\n\nexport abstract class Parser {\n protected elementStack: ASTv1.ParentNode[] = [];\n private lines: string[];\n readonly source: src.Source;\n public currentAttribute: Nullable<Attribute> = null;\n public currentNode: Nullable<\n Readonly<\n | ParserNodeBuilder<ASTv1.CommentStatement>\n | ParserNodeBuilder<ASTv1.TextNode>\n | ParserNodeBuilder<StartTag>\n | ParserNodeBuilder<EndTag>\n >\n > = null;\n public tokenizer: EventedTokenizer;\n\n constructor(\n source: src.Source,\n entityParser = new EntityParser(namedCharRefs),\n mode: 'precompile' | 'codemod' = 'precompile'\n ) {\n this.source = source;\n this.lines = source.source.split(/\\r\\n?|\\n/u);\n this.tokenizer = new EventedTokenizer(this, entityParser, mode);\n }\n\n offset(): src.SourceOffset {\n let { line, column } = this.tokenizer;\n return this.source.offsetFor(line, column);\n }\n\n pos({ line, column }: src.SourcePosition): src.SourceOffset {\n return this.source.offsetFor(line, column);\n }\n\n finish<T extends { loc: src.SourceSpan }>(node: ParserNodeBuilder<T>): T {\n return assign({}, node, {\n loc: node.start.until(this.offset()),\n } as const) as unknown as T;\n\n // node.loc = node.loc.withEnd(end);\n }\n\n abstract parse(node: HBS.Program, locals: string[]): ASTv1.Template;\n\n abstract Program(node: HBS.Program): HBS.Output<'Program'>;\n abstract MustacheStatement(node: HBS.MustacheStatement): HBS.Output<'MustacheStatement'>;\n abstract Decorator(node: HBS.Decorator): HBS.Output<'Decorator'>;\n abstract BlockStatement(node: HBS.BlockStatement): HBS.Output<'BlockStatement'>;\n abstract DecoratorBlock(node: HBS.DecoratorBlock): HBS.Output<'DecoratorBlock'>;\n abstract PartialStatement(node: HBS.PartialStatement): HBS.Output<'PartialStatement'>;\n abstract PartialBlockStatement(\n node: HBS.PartialBlockStatement\n ): HBS.Output<'PartialBlockStatement'>;\n abstract ContentStatement(node: HBS.ContentStatement): HBS.Output<'ContentStatement'>;\n abstract CommentStatement(node: HBS.CommentStatement): HBS.Output<'CommentStatement'>;\n abstract SubExpression(node: HBS.SubExpression): HBS.Output<'SubExpression'>;\n abstract PathExpression(node: HBS.PathExpression): HBS.Output<'PathExpression'>;\n abstract StringLiteral(node: HBS.StringLiteral): HBS.Output<'StringLiteral'>;\n abstract BooleanLiteral(node: HBS.BooleanLiteral): HBS.Output<'BooleanLiteral'>;\n abstract NumberLiteral(node: HBS.NumberLiteral): HBS.Output<'NumberLiteral'>;\n abstract UndefinedLiteral(node: HBS.UndefinedLiteral): HBS.Output<'UndefinedLiteral'>;\n abstract NullLiteral(node: HBS.NullLiteral): HBS.Output<'NullLiteral'>;\n\n abstract reset(): void;\n abstract finishData(): void;\n abstract tagOpen(): void;\n abstract beginData(): void;\n abstract appendToData(char: string): void;\n abstract beginStartTag(): void;\n abstract appendToTagName(char: string): void;\n abstract beginAttribute(): void;\n abstract appendToAttributeName(char: string): void;\n abstract beginAttributeValue(quoted: boolean): void;\n abstract appendToAttributeValue(char: string): void;\n abstract finishAttributeValue(): void;\n abstract markTagAsSelfClosing(): void;\n abstract beginEndTag(): void;\n abstract finishTag(): void;\n abstract beginComment(): void;\n abstract appendToCommentData(char: string): void;\n abstract finishComment(): void;\n abstract reportSyntaxError(error: string): void;\n\n get currentAttr(): Attribute {\n return expect(this.currentAttribute, 'expected attribute');\n }\n\n get currentTag(): ParserNodeBuilder<StartTag> | ParserNodeBuilder<EndTag> {\n let node = this.currentNode;\n localAssert(node && (node.type === 'StartTag' || node.type === 'EndTag'), 'expected tag');\n return node;\n }\n\n get currentStartTag(): ParserNodeBuilder<StartTag> {\n let node = this.currentNode;\n localAssert(node && node.type === 'StartTag', 'expected start tag');\n return node;\n }\n\n get currentEndTag(): ParserNodeBuilder<EndTag> {\n let node = this.currentNode;\n localAssert(node && node.type === 'EndTag', 'expected end tag');\n return node;\n }\n\n get currentComment(): ParserNodeBuilder<ASTv1.CommentStatement> {\n let node = this.currentNode;\n localAssert(node && node.type === 'CommentStatement', 'expected a comment');\n return node;\n }\n\n get currentData(): ParserNodeBuilder<ASTv1.TextNode> {\n let node = this.currentNode;\n localAssert(node && node.type === 'TextNode', 'expected a text node');\n return node;\n }\n\n acceptNode<T extends HBS.NodeType>(node: HBS.Node<T>): HBS.Output<T> {\n return (this[node.type as T] as (node: HBS.Node<T>) => HBS.Output<T>)(node);\n }\n\n currentElement(): ASTv1.ParentNode {\n return getLast(asPresentArray(this.elementStack));\n }\n\n sourceForNode(node: HBS.Node, endNode?: { loc: HBS.SourceLocation }): string {\n let firstLine = node.loc.start.line - 1;\n let currentLine = firstLine - 1;\n let firstColumn = node.loc.start.column;\n let string = [];\n let line: string;\n\n let lastLine: number;\n let lastColumn: number;\n\n if (endNode) {\n lastLine = endNode.loc.end.line - 1;\n lastColumn = endNode.loc.end.column;\n } else {\n lastLine = node.loc.end.line - 1;\n lastColumn = node.loc.end.column;\n }\n\n while (currentLine < lastLine) {\n currentLine++;\n line = unwrap(this.lines[currentLine]);\n\n if (currentLine === firstLine) {\n if (firstLine === lastLine) {\n string.push(line.slice(firstColumn, lastColumn));\n } else {\n string.push(line.slice(firstColumn));\n }\n } else if (currentLine === lastLine) {\n string.push(line.slice(0, lastColumn));\n } else {\n string.push(line);\n }\n }\n\n return string.join('\\n');\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */\nimport type { Nullable, Recast } from '@glimmer/interfaces';\nimport type { TokenizerState } from 'simple-html-tokenizer';\nimport { getLast, isPresentArray, localAssert, unwrap } from '@glimmer/debug-util';\n\nimport type { ParserNodeBuilder, StartTag } from '../parser';\nimport type * as src from '../source/api';\nimport type { SourceOffset, SourceSpan } from '../source/span';\nimport type * as ASTv1 from '../v1/api';\nimport type * as HBS from '../v1/handlebars-ast';\n\nimport { Parser } from '../parser';\nimport { NON_EXISTENT_LOCATION } from '../source/location';\nimport { generateSyntaxError } from '../syntax-error';\nimport { appendChild, isHBSLiteral, printLiteral } from '../utils';\nimport b from '../v1/parser-builders';\n\nconst BEFORE_ATTRIBUTE_NAME = 'beforeAttributeName' as TokenizerState.beforeAttributeName;\nconst ATTRIBUTE_VALUE_UNQUOTED = 'attributeValueUnquoted' as TokenizerState.attributeValueUnquoted;\n\nexport interface PendingError {\n mustache(span: SourceSpan): never;\n eof(offset: SourceOffset): never;\n}\n\nexport abstract class HandlebarsNodeVisitors extends Parser {\n // Because we interleave the HTML and HBS parsing, sometimes the HTML\n // tokenizer can run out of tokens when we switch into {{...}} or reached\n // EOF. There are positions where neither of these are expected, and it would\n // like to generate an error, but there is no span to attach the error to.\n // This allows the HTML tokenization to stash an error message and the next\n // mustache visitor will attach the message to the appropriate span and throw\n // the error.\n protected pendingError: Nullable<PendingError> = null;\n\n abstract override appendToCommentData(s: string): void;\n abstract override beginAttributeValue(quoted: boolean): void;\n abstract override finishAttributeValue(): void;\n\n parse(program: HBS.UpstreamProgram, blockParams: string[]): ASTv1.Template {\n localAssert(program.loc, '[BUG] Program in parser unexpectedly did not have loc');\n\n let node = b.template({\n body: [],\n blockParams,\n loc: this.source.spanFor(program.loc),\n });\n\n let template = this.parseProgram(node, program);\n\n // TODO: we really need to verify that the tokenizer is in an acceptable\n // state when we are \"done\" parsing. For example, right now, `<foo` parses\n // into `Template { body: [] }` which is obviously incorrect\n\n this.pendingError?.eof(template.loc.getEnd());\n\n return template;\n }\n\n Program(program: HBS.Program, blockParams?: ASTv1.VarHead[]): ASTv1.Block {\n // The abstract signature doesn't have the blockParams argument, but in\n // practice we can only come from this.BlockStatement() which adds the\n // extra argument for us\n localAssert(\n Array.isArray(blockParams),\n '[BUG] Program in parser unexpectedly called without block params'\n );\n\n localAssert(\n program.loc,\n '[BUG] Program in parser unexpectedly did not have loc. This should have been fixed in BlockStatement'\n );\n\n let node = b.blockItself({\n body: [],\n params: blockParams,\n chained: program.chained,\n loc: this.source.spanFor(program.loc),\n });\n\n return this.parseProgram(node, program);\n }\n\n private parseProgram<T extends ASTv1.ParentNode>(node: T, program: HBS.UpstreamProgram): T {\n if (program.body.length === 0) {\n return node;\n }\n\n let poppedNode;\n\n try {\n this.elementStack.push(node);\n\n for (let child of program.body) {\n this.acceptNode(child);\n }\n } finally {\n poppedNode = this.elementStack.pop();\n }\n\n // Ensure that that the element stack is balanced properly.\n if (node !== poppedNode) {\n if (poppedNode?.type === 'ElementNode') {\n throw generateSyntaxError(`Unclosed element \\`${poppedNode.tag}\\``, poppedNode.loc);\n } else {\n // If the stack is not balanced, then it is likely our own bug, because\n // any unclosed Handlebars blocks should already been caught by now\n localAssert(poppedNode !== undefined, '[BUG] empty parser elementStack');\n localAssert(false, `[BUG] mismatched parser elementStack node: ${node.type}`);\n }\n }\n\n return node;\n }\n\n BlockStatement(block: HBS.UpstreamBlockStatement): ASTv1.BlockStatement | void {\n if (this.tokenizer.state === 'comment') {\n localAssert(block.loc, '[BUG] BlockStatement in parser unexpectedly did not have loc');\n this.appendToCommentData(this.sourceForNode(block as HBS.Node));\n return;\n }\n\n if (this.tokenizer.state !== 'data' && this.tokenizer.state !== 'beforeData') {\n throw generateSyntaxError(\n 'A block may only be used inside an HTML element or another block.',\n this.source.spanFor(block.loc)\n );\n }\n\n const { path, params, hash } = acceptCallNodes(this, block);\n const loc = this.source.spanFor(block.loc);\n\n // Backfill block params loc for the default block\n let blockParams: ASTv1.VarHead[] = [];\n let repairedBlock: HBS.BlockStatement;\n\n if (block.program.blockParams?.length) {\n // Start from right after the hash\n let span = hash.loc.collapse('end');\n\n // Extend till the beginning of the block\n if (block.program.loc) {\n span = span.withEnd(this.source.spanFor(block.program.loc).getStart());\n } else if (block.program.body[0]) {\n span = span.withEnd(this.source.spanFor(block.program.body[0].loc).getStart());\n } else {\n // ...or if all else fail, use the end of the block statement\n // this can only happen if the block statement is empty anyway\n span = span.withEnd(loc.getEnd());\n }\n\n repairedBlock = repairBlock(this.source, block, span);\n\n // Now we have a span for something like this:\n //\n // {{#foo bar baz=bat as |wow wat|}}\n // ~~~~~~~~~~~~~~~\n //\n // Or, if we are unlucky:\n //\n // {{#foo bar baz=bat as |wow wat|}}{{/foo}}\n // ~~~~~~~~~~~~~~~~~~~~~~~\n //\n // Either way, within this span, there should be exactly two pipes\n // fencing our block params, neatly whitespace separated and with\n // legal identifiers only\n const content = span.asString();\n let skipStart = content.indexOf('|') + 1;\n const limit = content.indexOf('|', skipStart);\n\n for (const name of block.program.blockParams) {\n let nameStart: number;\n let loc: SourceSpan;\n\n if (skipStart >= limit) {\n nameStart = -1;\n } else {\n nameStart = content.indexOf(name, skipStart);\n }\n\n if (nameStart === -1 || nameStart + name.length > limit) {\n skipStart = limit;\n loc = this.source.spanFor(NON_EXISTENT_LOCATION);\n } else {\n skipStart = nameStart;\n loc = span.sliceStartChars({ skipStart, chars: name.length });\n skipStart += name.length;\n }\n\n blockParams.push(b.var({ name, loc }));\n }\n } else {\n repairedBlock = repairBlock(this.source, block, loc);\n }\n\n const program = this.Program(repairedBlock.program, blockParams);\n const inverse = repairedBlock.inverse ? this.Program(repairedBlock.inverse, []) : null;\n\n const node = b.block({\n path,\n params,\n hash,\n defaultBlock: program,\n elseBlock: inverse,\n loc: this.source.spanFor(block.loc),\n openStrip: block.openStrip,\n inverseStrip: block.inverseStrip,\n closeStrip: block.closeStrip,\n });\n\n const parentProgram = this.currentElement();\n\n appendChild(parentProgram, node);\n }\n\n MustacheStatement(rawMustache: HBS.MustacheStatement): ASTv1.MustacheStatement | void {\n this.pendingError?.mustache(this.source.spanFor(rawMustache.loc));\n\n const { tokenizer } = this;\n\n if (tokenizer.state === 'comment') {\n this.appendToCommentData(this.sourceForNode(rawMustache));\n return;\n }\n\n let mustache: ASTv1.MustacheStatement;\n const { escaped, loc, strip } = rawMustache;\n\n if ('original' in rawMustache.path && rawMustache.path.original === '...attributes') {\n throw generateSyntaxError(\n 'Illegal use of ...attributes',\n this.source.spanFor(rawMustache.loc)\n );\n }\n\n if (isHBSLiteral(rawMustache.path)) {\n mustache = b.mustache({\n path: this.acceptNode<(typeof rawMustache.path)['type']>(rawMustache.path),\n params: [],\n hash: b.hash({ pairs: [], loc: this.source.spanFor(rawMustache.path.loc).collapse('end') }),\n trusting: !escaped,\n loc: this.source.spanFor(loc),\n strip,\n });\n } else {\n const { path, params, hash } = acceptCallNodes(\n this,\n rawMustache as HBS.MustacheStatement & {\n path: HBS.PathExpression | HBS.SubExpression;\n }\n );\n mustache = b.mustache({\n path,\n params,\n hash,\n trusting: !escaped,\n loc: this.source.spanFor(loc),\n strip,\n });\n }\n\n switch (tokenizer.state) {\n // Tag helpers\n case 'tagOpen':\n case 'tagName':\n throw generateSyntaxError(`Cannot use mustaches in an elements tagname`, mustache.loc);\n\n case 'beforeAttributeName':\n addElementModifier(this.currentStartTag, mustache);\n break;\n case 'attributeName':\n case 'afterAttributeName':\n this.beginAttributeValue(false);\n this.finishAttributeValue();\n addElementModifier(this.currentStartTag, mustache);\n tokenizer.transitionTo(BEFORE_ATTRIBUTE_NAME);\n break;\n case 'afterAttributeValueQuoted':\n addElementModifier(this.currentStartTag, mustache);\n tokenizer.transitionTo(BEFORE_ATTRIBUTE_NAME);\n break;\n\n // Attribute values\n case 'beforeAttributeValue':\n this.beginAttributeValue(false);\n this.appendDynamicAttributeValuePart(mustache);\n tokenizer.transitionTo(ATTRIBUTE_VALUE_UNQUOTED);\n break;\n case 'attributeValueDoubleQuoted':\n case 'attributeValueSingleQuoted':\n case 'attributeValueUnquoted':\n this.appendDynamicAttributeValuePart(mustache);\n break;\n\n // TODO: Only append child when the tokenizer state makes\n // sense to do so, otherwise throw an error.\n default:\n appendChild(this.currentElement(), mustache);\n }\n\n return mustache;\n }\n\n appendDynamicAttributeValuePart(part: ASTv1.MustacheStatement): void {\n this.finalizeTextPart();\n const attr = this.currentAttr;\n attr.isDynamic = true;\n attr.parts.push(part);\n }\n\n finalizeTextPart(): void {\n const attr = this.currentAttr;\n const text = attr.currentPart;\n if (text !== null) {\n this.currentAttr.parts.push(text);\n this.startTextPart();\n }\n }\n\n startTextPart(): void {\n this.currentAttr.currentPart = null;\n }\n\n ContentStatement(content: HBS.ContentStatement): void {\n updateTokenizerLocation(this.tokenizer, content);\n\n this.tokenizer.tokenizePart(content.value);\n this.tokenizer.flushData();\n }\n\n CommentStatement(rawComment: HBS.CommentStatement): Nullable<ASTv1.MustacheCommentStatement> {\n const { tokenizer } = this;\n\n if (tokenizer.state === 'comment') {\n this.appendToCommentData(this.sourceForNode(rawComment));\n return null;\n }\n\n const { value, loc } = rawComment;\n const comment = b.mustacheComment({ value, loc: this.source.spanFor(loc) });\n\n switch (tokenizer.state) {\n case 'beforeAttributeName':\n case 'afterAttributeName':\n this.currentStartTag.comments.push(comment);\n break;\n\n case 'beforeData':\n case 'data':\n appendChild(this.currentElement(), comment);\n break;\n\n default:\n throw generateSyntaxError(\n `Using a Handlebars comment when in the \\`${tokenizer['state']}\\` state is not supported`,\n this.source.spanFor(rawComment.loc)\n );\n }\n\n return comment;\n }\n\n PartialStatement(partial: HBS.PartialStatement): never {\n throw generateSyntaxError(\n `Handlebars partials are not supported`,\n this.source.spanFor(partial.loc)\n );\n }\n\n PartialBlockStatement(partialBlock: HBS.PartialBlockStatement): never {\n throw generateSyntaxError(\n `Handlebars partial blocks are not supported`,\n this.source.spanFor(partialBlock.loc)\n );\n }\n\n Decorator(decorator: HBS.Decorator): never {\n throw generateSyntaxError(\n `Handlebars decorators are not supported`,\n this.source.spanFor(decorator.loc)\n );\n }\n\n DecoratorBlock(decoratorBlock: HBS.DecoratorBlock): never {\n throw generateSyntaxError(\n `Handlebars decorator blocks are not supported`,\n this.source.spanFor(decoratorBlock.loc)\n );\n }\n\n SubExpression(sexpr: HBS.SubExpression): ASTv1.SubExpression {\n const { path, params, hash } = acceptCallNodes(this, sexpr);\n return b.sexpr({ path, params, hash, loc: this.source.spanFor(sexpr.loc) });\n }\n\n PathExpression(path: HBS.PathExpression): ASTv1.PathExpression {\n const { original } = path;\n let parts: string[];\n\n if (original.indexOf('/') !== -1) {\n if (original.slice(0, 2) === './') {\n throw generateSyntaxError(\n `Using \"./\" is not supported in Glimmer and unnecessary`,\n this.source.spanFor(path.loc)\n );\n }\n if (original.slice(0, 3) === '../') {\n throw generateSyntaxError(\n `Changing context using \"../\" is not supported in Glimmer`,\n this.source.spanFor(path.loc)\n );\n }\n if (original.indexOf('.') !== -1) {\n throw generateSyntaxError(\n `Mixing '.' and '/' in paths is not supported in Glimmer; use only '.' to separate property paths`,\n this.source.spanFor(path.loc)\n );\n }\n parts = [path.parts.join('/')];\n } else if (original === '.') {\n throw generateSyntaxError(\n `'.' is not a supported path in Glimmer; check for a path with a trailing '.'`,\n this.source.spanFor(path.loc)\n );\n } else {\n parts = path.parts;\n }\n\n let thisHead = false;\n\n // This is to fix a bug in the Handlebars AST where the path expressions in\n // `{{this.foo}}` (and similarly `{{foo-bar this.foo named=this.foo}}` etc)\n // are simply turned into `{{foo}}`. The fix is to push it back onto the\n // parts array and let the runtime see the difference. However, we cannot\n // simply use the string `this` as it means literally the property called\n // \"this\" in the current context (it can be expressed in the syntax as\n // `{{[this]}}`, where the square bracket are generally for this kind of\n // escaping – such as `{{foo.[\"bar.baz\"]}}` would mean lookup a property\n // named literally \"bar.baz\" on `this.foo`). By convention, we use `null`\n // for this purpose.\n if (/^this(?:\\..+)?$/u.test(original)) {\n thisHead = true;\n }\n\n let pathHead: ASTv1.PathHead;\n if (thisHead) {\n pathHead = b.this({\n loc: this.source.spanFor({\n start: path.loc.start,\n end: { line: path.loc.start.line, column: path.loc.start.column + 4 },\n }),\n });\n } else if (path.data) {\n const head = parts.shift();\n\n if (head === undefined) {\n throw generateSyntaxError(\n `Attempted to parse a path expression, but it was not valid. Paths beginning with @ must start with a-z.`,\n this.source.spanFor(path.loc)\n );\n }\n\n pathHead = b.atName({\n name: `@${head}`,\n loc: this.source.spanFor({\n start: path.loc.start,\n end: { line: path.loc.start.line, column: path.loc.start.column + head.length + 1 },\n }),\n });\n } else {\n const head = parts.shift();\n\n if (head === undefined) {\n throw generateSyntaxError(\n `Attempted to parse a path expression, but it was not valid. Paths must start with a-z or A-Z.`,\n this.source.spanFor(path.loc)\n );\n }\n\n pathHead = b.var({\n name: head,\n loc: this.source.spanFor({\n start: path.loc.start,\n end: { line: path.loc.start.line, column: path.loc.start.column + head.length },\n }),\n });\n }\n\n return b.path({\n head: pathHead,\n tail: parts,\n loc: this.source.spanFor(path.loc),\n });\n }\n\n Hash(hash: HBS.Hash): ASTv1.Hash {\n const pairs = hash.pairs.map((pair) =>\n b.pair({\n key: pair.key,\n value: this.acceptNode<HBS.Expression['type']>(pair.value),\n loc: this.source.spanFor(pair.loc),\n })\n );\n\n return b.hash({ pairs, loc: this.source.spanFor(hash.loc) });\n }\n\n StringLiteral(string: HBS.StringLiteral): ASTv1.StringLiteral {\n return b.literal({\n type: 'StringLiteral',\n value: string.value,\n loc: this.source.spanFor(string.loc),\n });\n }\n\n BooleanLiteral(boolean: HBS.BooleanLiteral): ASTv1.BooleanLiteral {\n return b.literal({\n type: 'BooleanLiteral',\n value: boolean.value,\n loc: this.source.spanFor(boolean.loc),\n });\n }\n\n NumberLiteral(number: HBS.NumberLiteral): ASTv1.NumberLiteral {\n return b.literal({\n type: 'NumberLiteral',\n value: number.value,\n loc: this.source.spanFor(number.loc),\n });\n }\n\n UndefinedLiteral(undef: HBS.UndefinedLiteral): ASTv1.UndefinedLiteral {\n return b.literal({\n type: 'UndefinedLiteral',\n value: undefined,\n loc: this.source.spanFor(undef.loc),\n });\n }\n\n NullLiteral(nul: HBS.NullLiteral): ASTv1.NullLiteral {\n return b.literal({\n type: 'NullLiteral',\n value: null,\n loc: this.source.spanFor(nul.loc),\n });\n }\n}\n\nfunction calculateRightStrippedOffsets(original: string, value: string) {\n if (value === '') {\n // if it is empty, just return the count of newlines\n // in original\n return {\n lines: original.split('\\n').length - 1,\n columns: 0,\n };\n }\n\n // otherwise, return the number of newlines prior to\n // `value`\n const [difference] = original.split(value) as [string];\n const lines = difference.split(/\\n/u);\n const lineCount = lines.length - 1;\n\n return {\n lines: lineCount,\n columns: unwrap(lines[lineCount]).length,\n };\n}\n\nfunction updateTokenizerLocation(tokenizer: Parser['tokenizer'], content: HBS.ContentStatement) {\n let line = content.loc.start.line;\n let column = content.loc.start.column;\n\n const offsets = calculateRightStrippedOffsets(\n content.original as Recast<HBS.StripFlags, string>,\n content.value\n );\n\n line = line + offsets.lines;\n if (offsets.lines) {\n column = offsets.columns;\n } else {\n column = column + offsets.columns;\n }\n\n tokenizer.line = line;\n tokenizer.column = column;\n}\n\nfunction acceptCallNodes(\n compiler: HandlebarsNodeVisitors,\n node: {\n path:\n | HBS.PathExpression\n | HBS.SubExpression\n | HBS.StringLiteral\n | HBS.UndefinedLiteral\n | HBS.NullLiteral\n | HBS.NumberLiteral\n | HBS.BooleanLiteral;\n params: HBS.Expression[];\n hash?: HBS.Hash;\n }\n): {\n path: ASTv1.PathExpression | ASTv1.SubExpression;\n params: ASTv1.Expression[];\n hash: ASTv1.Hash;\n} {\n let path: ASTv1.PathExpression | ASTv1.SubExpression;\n\n switch (node.path.type) {\n case 'PathExpression':\n path = compiler.PathExpression(node.path);\n break;\n\n case 'SubExpression':\n path = compiler.SubExpression(node.path);\n break;\n\n case 'StringLiteral':\n case 'UndefinedLiteral':\n case 'NullLiteral':\n case 'NumberLiteral':\n case 'BooleanLiteral': {\n let value: string;\n if (node.path.type === 'BooleanLiteral') {\n value = node.path.original.toString();\n } else if (node.path.type === 'StringLiteral') {\n value = `\"${node.path.original}\"`;\n } else if (node.path.type === 'NullLiteral') {\n value = 'null';\n } else if (node.path.type === 'NumberLiteral') {\n value = node.path.value.toString();\n } else {\n value = 'undefined';\n }\n throw generateSyntaxError(\n `${node.path.type} \"${\n node.path.type === 'StringLiteral' ? node.path.original : value\n }\" cannot be called as a sub-expression, replace (${value}) with ${value}`,\n compiler.source.spanFor(node.path.loc)\n );\n }\n }\n\n const params = node.params.map((e) => compiler.acceptNode<HBS.Expression['type']>(e));\n\n // if there is no hash, position it as a collapsed node immediately after the last param (or the\n // path, if there are also no params)\n const end = isPresentArray(params) ? getLast(params).loc : path.loc;\n\n const hash = node.hash\n ? compiler.Hash(node.hash)\n : b.hash({\n pairs: [],\n loc: compiler.source.spanFor(end).collapse('end'),\n });\n\n return { path, params, hash };\n}\n\nfunction addElementModifier(\n element: ParserNodeBuilder<StartTag>,\n mustache: ASTv1.MustacheStatement\n) {\n const { path, params, hash, loc } = mustache;\n\n if (isHBSLiteral(path)) {\n const modifier = `{{${printLiteral(path)}}}`;\n const tag = `<${element.name} ... ${modifier} ...`;\n\n throw generateSyntaxError(`In ${tag}, ${modifier} is not a valid modifier`, mustache.loc);\n }\n\n const modifier = b.elementModifier({ path, params, hash, loc });\n element.modifiers.push(modifier);\n}\n\nfunction repairBlock(\n source: src.Source,\n block: HBS.UpstreamBlockStatement,\n fallbackStart: SourceSpan\n): HBS.BlockStatement {\n // Extend till the beginning of the block\n if (!block.program.loc) {\n const start = block.program.body.at(0);\n const end = block.program.body.at(-1);\n\n if (start && end) {\n block.program.loc = {\n ...start.loc,\n end: end.loc.end,\n };\n } else {\n const loc = source.spanFor(block.loc);\n block.program.loc = fallbackStart.withEnd(loc.getEnd());\n }\n }\n\n let endProgram = source.spanFor(block.program.loc).getEnd();\n\n if (block.inverse && !block.inverse.loc) {\n block.inverse.loc = endProgram.collapsed();\n }\n\n return block as HBS.BlockStatement;\n}\n","import type { Nullable } from '@glimmer/interfaces';\nimport type { TokenizerState } from 'simple-html-tokenizer';\nimport {\n asPresentArray,\n assertPresentArray,\n getFirst,\n getLast,\n isPresentArray,\n localAssert,\n} from '@glimmer/debug-util';\nimport { assign } from '@glimmer/util';\nimport { parse, parseWithoutProcessing } from '@handlebars/parser';\nimport { EntityParser } from 'simple-html-tokenizer';\n\nimport type { EndTag, StartTag } from '../parser';\nimport type { NodeVisitor } from '../traversal/visitor';\nimport type * as ASTv1 from '../v1/api';\nimport type * as HBS from '../v1/handlebars-ast';\n\nimport print from '../generation/print';\nimport { voidMap } from '../generation/printer';\nimport * as src from '../source/api';\nimport { generateSyntaxError } from '../syntax-error';\nimport traverse from '../traversal/traverse';\nimport Walker from '../traversal/walker';\nimport { appendChild } from '../utils';\nimport b from '../v1/parser-builders';\nimport publicBuilder from '../v1/public-builders';\nimport { HandlebarsNodeVisitors } from './handlebars-node-visitors';\n\n// vendored from simple-html-tokenizer because it's unexported\nfunction isSpace(char: string): boolean {\n return /[\\t\\n\\f ]/u.test(char);\n}\n\nexport class TokenizerEventHandlers extends HandlebarsNodeVisitors {\n private tagOpenLine = 0;\n private tagOpenColumn = 0;\n\n reset(): void {\n this.currentNode = null;\n }\n\n // Comment\n\n beginComment(): void {\n this.currentNode = {\n type: 'CommentStatement',\n value: '',\n start: this.source.offsetFor(this.tagOpenLine, this.tagOpenColumn),\n };\n }\n\n appendToCommentData(char: string): void {\n this.currentComment.value += char;\n }\n\n finishComment(): void {\n appendChild(this.currentElement(), b.comment(this.finish(this.currentComment)));\n }\n\n // Data\n\n beginData(): void {\n this.currentNode = {\n type: 'TextNode',\n chars: '',\n start: this.offset(),\n };\n }\n\n appendToData(char: string): void {\n this.currentData.chars += char;\n }\n\n finishData(): void {\n appendChild(this.currentElement(), b.text(this.finish(this.currentData)));\n }\n\n // Tags - basic\n\n tagOpen(): void {\n this.tagOpenLine = this.tokenizer.line;\n this.tagOpenColumn = this.tokenizer.column;\n }\n\n beginStartTag(): void {\n this.currentNode = {\n type: 'StartTag',\n name: '',\n nameStart: null,\n nameEnd: null,\n attributes: [],\n modifiers: [],\n comments: [],\n params: [],\n selfClosing: false,\n start: this.source.offsetFor(this.tagOpenLine, this.tagOpenColumn),\n };\n }\n\n beginEndTag(): void {\n this.currentNode = {\n type: 'EndTag',\n name: '',\n start: this.source.offsetFor(this.tagOpenLine, this.tagOpenColumn),\n };\n }\n\n finishTag(): void {\n let tag = this.finish<StartTag | EndTag>(this.currentTag);\n\n if (tag.type === 'StartTag') {\n this.finishStartTag();\n\n if (tag.name === ':') {\n throw generateSyntaxError(\n 'Invalid named block named detected, you may have created a named block without a name, or you may have began your name with a number. Named blocks must have names that are at least one character long, and begin with a lower case letter',\n this.source.spanFor({\n start: this.currentTag.start.toJSON(),\n end: this.offset().toJSON(),\n })\n );\n }\n\n if (voidMap.has(tag.name) || tag.selfClosing) {\n this.finishEndTag(true);\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- exhaustive\n localAssert(tag.type === 'EndTag', `Invalid tag type ${tag.type}`);\n this.finishEndTag(false);\n }\n }\n\n finishStartTag(): void {\n let { name, nameStart, nameEnd } = this.currentStartTag;\n\n // <> should probably be a syntax error, but s-h-t is currently broken for that case\n localAssert(name !== '', 'tag name cannot be empty');\n localAssert(nameStart !== null, 'nameStart unexpectedly null');\n localAssert(nameEnd !== null, 'nameEnd unexpectedly null');\n\n let nameLoc = nameStart.until(nameEnd);\n let [head, ...tail] = asPresentArray(name.split('.'));\n let path = b.path({\n head: b.head({ original: head, loc: nameLoc.sliceStartChars({ chars: head.length }) }),\n tail,\n loc: nameLoc,\n });\n\n let { attributes, modifiers, comments, params, selfClosing, loc } = this.finish(\n this.currentStartTag\n );\n\n let element = b.element({\n path,\n selfClosing,\n attributes,\n modifiers,\n comments,\n params,\n children: [],\n openTag: loc,\n closeTag: selfClosing ? null : src.SourceSpan.broken(),\n loc,\n });\n this.elementStack.push(element);\n }\n\n finishEndTag(isVoid: boolean): void {\n let { start: closeTagStart } = this.currentTag;\n let tag = this.finish<StartTag | EndTag>(this.currentTag);\n\n let element = this.elementStack.pop() as ASTv1.ParentNode;\n\n this.validateEndTag(tag, element, isVoid);\n let parent = this.currentElement();\n\n if (isVoid) {\n element.closeTag = null;\n } else if (element.selfClosing) {\n localAssert(element.closeTag === null, 'element.closeTag unexpectedly present');\n } else {\n element.closeTag = closeTagStart.until(this.offset());\n }\n\n element.loc = element.loc.withEnd(this.offset());\n\n appendChild(parent, b.element(element));\n }\n\n markTagAsSelfClosing(): void {\n let tag = this.currentTag;\n\n if (tag.type === 'StartTag') {\n tag.selfClosing = true;\n } else {\n throw generateSyntaxError(\n `Invalid end tag: closing tag must not be self-closing`,\n this.source.spanFor({ start: tag.start.toJSON(), end: this.offset().toJSON() })\n );\n }\n }\n\n // Tags - name\n\n appendToTagName(char: string): void {\n let tag = this.currentTag;\n tag.name += char;\n\n if (tag.type === 'StartTag') {\n let offset = this.offset();\n\n if (tag.nameStart === null) {\n localAssert(tag.nameEnd === null, 'nameStart and nameEnd must both be null');\n\n // Note that the tokenizer already consumed the token here\n tag.nameStart = offset.move(-1);\n }\n\n tag.nameEnd = offset;\n }\n }\n\n // Tags - attributes\n\n beginAttribute(): void {\n let offset = this.offset();\n\n this.currentAttribute = {\n name: '',\n parts: [],\n currentPart: null,\n isQuoted: false,\n isDynamic: false,\n start: offset,\n valueSpan: offset.collapsed(),\n };\n }\n\n appendToAttributeName(char: string): void {\n this.currentAttr.name += char;\n\n // The block params parsing code can actually handle peek=non-space just\n // fine, but this check was added as an optimization, as there is a little\n // bit of setup overhead for the parsing logic just to immediately bail\n if (this.currentAttr.name === 'as') {\n this.parsePossibleBlockParams();\n }\n }\n\n beginAttributeValue(isQuoted: boolean): void {\n this.currentAttr.isQuoted = isQuoted;\n this.startTextPart();\n this.currentAttr.valueSpan = this.offset().collapsed();\n }\n\n appendToAttributeValue(char: string): void {\n let parts = this.currentAttr.parts;\n let lastPart = parts[parts.length - 1];\n\n let current = this.currentAttr.currentPart;\n\n if (current) {\n current.chars += char;\n\n // update end location for each added char\n current.loc = current.loc.withEnd(this.offset());\n } else {\n // initially assume the text node is a single char\n let loc: src.SourceOffset = this.offset();\n\n // the tokenizer line/column have already been advanced, correct location info\n if (char === '\\n') {\n loc = lastPart ? lastPart.loc.getEnd() : this.currentAttr.valueSpan.getStart();\n } else {\n loc = loc.move(-1);\n }\n\n this.currentAttr.currentPart = b.text({ chars: char, loc: loc.collapsed() });\n }\n }\n\n finishAttributeValue(): void {\n this.finalizeTextPart();\n\n let tag = this.currentTag;\n let tokenizerPos = this.offset();\n\n if (tag.type === 'EndTag') {\n throw generateSyntaxError(\n `Invalid end tag: closing tag must not have attributes`,\n this.source.spanFor({ start: tag.start.toJSON(), end: tokenizerPos.toJSON() })\n );\n }\n\n let { name, parts, start, isQuoted, isDynamic, valueSpan } = this.currentAttr;\n\n // Just trying to be helpful with `<Hello |foo|>` rather than letting it through as an attribute\n if (name.startsWith('|') && parts.length === 0 && !isQuoted && !isDynamic) {\n throw generateSyntaxError(\n 'Invalid block parameters syntax: block parameters must be preceded by the `as` keyword',\n start.until(start.move(name.length))\n );\n }\n\n let value = this.assembleAttributeValue(parts, isQuoted, isDynamic, start.until(tokenizerPos));\n value.loc = valueSpan.withEnd(tokenizerPos);\n\n let attribute = b.attr({ name, value, loc: start.until(tokenizerPos) });\n\n this.currentStartTag.attributes.push(attribute);\n }\n\n private parsePossibleBlockParams() {\n // const enums that we can't use directly\n const BEFORE_ATTRIBUTE_NAME = 'beforeAttributeName' as TokenizerState.beforeAttributeName;\n const ATTRIBUTE_NAME = 'attributeName' as TokenizerState.attributeName;\n const AFTER_ATTRIBUTE_NAME = 'afterAttributeName' as TokenizerState.afterAttributeName;\n\n // Regex to validate the identifier for block parameters.\n // Based on the ID validation regex in Handlebars.\n\n const ID_INVERSE_PATTERN = /[!\"#%&'()*+./;<=>@[\\\\\\]^`{|}~]/u;\n\n type States = {\n PossibleAs: { state: 'PossibleAs' };\n BeforeStartPipe: { state: 'BeforeStartPipe' };\n BeforeBlockParamName: { state: 'BeforeBlockParamName' };\n BlockParamName: {\n state: 'BlockParamName';\n name: string;\n start: src.SourceOffset;\n };\n AfterEndPipe: { state: 'AfterEndPipe' };\n Error: {\n state: 'Error';\n message: string;\n start: src.SourceOffset;\n };\n Done: { state: 'Done' };\n };\n\n type State = States[keyof States];\n\n type Handler = (next: string) => void;\n\n localAssert(this.tokenizer.state === ATTRIBUTE_NAME, 'must be in TokenizerState.attributeName');\n\n const element = this.currentStartTag;\n const as = this.currentAttr;\n\n let state = { state: 'PossibleAs' } as State;\n\n const handlers = {\n PossibleAs: (next: string) => {\n localAssert(state.state === 'PossibleAs', 'bug in block params parser');\n\n if (isSpace(next)) {\n // \" as ...\"\n state = { state: 'BeforeStartPipe' };\n this.tokenizer.transitionTo(AFTER_ATTRIBUTE_NAME);\n this.tokenizer.consume();\n } else if (next === '|') {\n // \" as|...\"\n // Following Handlebars and require a space between \"as\" and the pipe\n throw generateSyntaxError(\n `Invalid block parameters syntax: expecting at least one space character between \"as\" and \"|\"`,\n as.start.until(this.offset().move(1))\n );\n } else {\n // \" as{{...\", \" async...\", \" as=...\", \" as>...\", \" as/>...\"\n // Don't consume, let the normal tokenizer code handle the next steps\n state = { state: 'Done' };\n }\n },\n\n BeforeStartPipe: (next: string) => {\n localAssert(state.state === 'BeforeStartPipe', 'bug in block params parser');\n\n if (isSpace(next)) {\n this.tokenizer.consume();\n } else if (next === '|') {\n state = { state: 'BeforeBlockParamName' };\n this.tokenizer.transitionTo(BEFORE_ATTRIBUTE_NAME);\n this.tokenizer.consume();\n } else {\n // \" as {{...\", \" as bs...\", \" as =...\", \" as ...\", \" as/>...\"\n // Don't consume, let the normal tokenizer code handle the next steps\n state = { state: 'Done' };\n }\n },\n\n BeforeBlockParamName: (next: string) => {\n localAssert(state.state === 'BeforeBlockParamName', 'bug in block params parser');\n\n if (isSpace(next)) {\n this.tokenizer.consume();\n } else if (next === '') {\n // The HTML tokenizer ran out of characters, so we are either\n // encountering mustache or <EOF>\n state = { state: 'Done' };\n this.pendingError = {\n mustache(loc: src.SourceSpan) {\n throw generateSyntaxError(\n `Invalid block parameters syntax: mustaches cannot be used inside parameters list`,\n loc\n );\n },\n eof(loc: src.SourceOffset) {\n throw generateSyntaxError(\n `Invalid block parameters syntax: expecting the tag to be closed with \">\" or \"/>\" after parameters list`,\n as.start.until(loc)\n );\n },\n };\n } else if (next === '|') {\n if (element.params.length === 0) {\n // Following Handlebars and treat empty block params a syntax error\n throw generateSyntaxError(\n `Invalid block parameters syntax: empty parameters list, expecting at least one identifier`,\n as.start.until(this.offset().move(1))\n );\n } else {\n state = { state: 'AfterEndPipe' };\n this.tokenizer.consume();\n }\n } else if (next === '>' || next === '/') {\n throw generateSyntaxError(\n `Invalid block parameters syntax: incomplete parameters list, expecting \"|\" but the tag was closed prematurely`,\n as.start.until(this.offset().move(1))\n );\n } else {\n // slurp up anything else into the name, validate later\n state = {\n state: 'BlockParamName',\n name: next,\n start: this.offset(),\n };\n this.tokenizer.consume();\n }\n },\n\n BlockParamName: (next: string) => {\n localAssert(state.state === 'BlockParamName', 'bug in block params parser');\n\n if (next === '') {\n // The HTML tokenizer ran out of characters, so we are either\n // encountering mustache or <EOF>, HBS side will attach the error\n // to the next span\n state = { state: 'Done' };\n this.pendingError = {\n mustache(loc: src.SourceSpan) {\n throw generateSyntaxError(\n `Invalid block parameters syntax: mustaches cannot be used inside parameters list`,\n loc\n );\n },\n eof(loc: src.SourceOffset) {\n throw generateSyntaxError(\n `Invalid block parameters syntax: expecting the tag to be closed with \">\" or \"/>\" after parameters list`,\n as.start.until(loc)\n );\n },\n };\n } else if (next === '|' || isSpace(next)) {\n let loc = state.start.until(this.offset());\n\n if (state.name === 'this' || ID_INVERSE_PATTERN.test(state.name)) {\n throw generateSyntaxError(\n `Invalid block parameters syntax: invalid identifier name \\`${state.name}\\``,\n loc\n );\n }\n\n element.params.push(b.var({ name: state.name, loc }));\n\n state = next === '|' ? { state: 'AfterEndPipe' } : { state: 'BeforeBlockParamName' };\n this.tokenizer.consume();\n } else if (next === '>' || next === '/') {\n throw generateSyntaxError(\n `Invalid block parameters syntax: expecting \"|\" but the tag was closed prematurely`,\n as.start.until(this.offset().move(1))\n );\n } else {\n // slurp up anything else into the name, validate later\n state.name += next;\n this.tokenizer.consume();\n }\n },\n\n AfterEndPipe: (next: string) => {\n localAssert(state.state === 'AfterEndPipe', 'bug in block params parser');\n\n if (isSpace(next)) {\n this.tokenizer.consume();\n } else if (next === '') {\n // The HTML tokenizer ran out of characters, so we are either\n // encountering mustache or <EOF>, HBS side will attach the error\n // to the next span\n state = { state: 'Done' };\n this.pendingError = {\n mustache(loc: src.SourceSpan) {\n throw generateSyntaxError(\n `Invalid block parameters syntax: modifiers cannot follow parameters list`,\n loc\n );\n },\n eof(loc: src.SourceOffset) {\n throw generateSyntaxError(\n `Invalid block parameters syntax: expecting the tag to be closed with \">\" or \"/>\" after parameters list`,\n as.start.until(loc)\n );\n },\n };\n } else if (next === '>' || next === '/') {\n // Don't consume, let the normal tokenizer code handle the next steps\n state = { state: 'Done' };\n } else {\n // Slurp up the next \"token\" for the error span\n state = {\n state: 'Error',\n message:\n 'Invalid block parameters syntax: expecting the tag to be closed with \">\" or \"/>\" after parameters list',\n start: this.offset(),\n };\n this.tokenizer.consume();\n }\n },\n\n Error: (next: string) => {\n localAssert(state.state === 'Error', 'bug in block params parser');\n\n if (next === '' || next === '/' || next === '>' || isSpace(next)) {\n throw generateSyntaxError(state.message, state.start.until(this.offset()));\n } else {\n // Slurp up the next \"token\" for the error span\n this.tokenizer.consume();\n }\n },\n\n Done: () => {\n localAssert(false, 'This should never be called');\n },\n } as const satisfies {\n [S in keyof States]: Handler;\n };\n\n let next: string;\n\n do {\n next = this.tokenizer.peek();\n handlers[state.state](next);\n } while (state.state !== 'Done' && next !== '');\n\n localAssert(state.state === 'Done', 'bug in block params parser');\n }\n\n reportSyntaxError(message: string): void {\n throw generateSyntaxError(message, this.offset().collapsed());\n }\n\n assembleConcatenatedValue(\n parts: (ASTv1.MustacheStatement | ASTv1.TextNode)[]\n ): ASTv1.ConcatStatement {\n assertPresentArray(parts, `the concatenation parts of an element should not be empty`);\n\n let first = getFirst(parts);\n let last = getLast(parts);\n\n return b.concat({\n parts,\n loc: this.source.spanFor(first.loc).extend(this.source.spanFor(last.loc)),\n });\n }\n\n validateEndTag(\n tag: StartTag | EndTag,\n element: ASTv1.ParentNode,\n selfClosing: boolean\n ): asserts element is ASTv1.ElementNode {\n if (voidMap.has(tag.name) && !selfClosing) {\n // EngTag is also called by StartTag for void and self-closing tags (i.e.\n // <input> or <br />, so we need to check for that here. Otherwise, we would\n // throw an error for those cases.\n throw generateSyntaxError(\n `<${tag.name}> elements do not need end tags. You should remove it`,\n tag.loc\n );\n } else if (element.type !== 'ElementNode') {\n throw generateSyntaxError(`Closing tag </${tag.name}> without an open tag`, tag.loc);\n } else if (element.tag !== tag.name) {\n throw generateSyntaxError(\n `Closing tag </${tag.name}> did not match last open tag <${element.tag}> (on line ${element.loc.startPosition.line})`,\n tag.loc\n );\n }\n }\n\n assembleAttributeValue(\n parts: ASTv1.AttrPart[],\n isQuoted: boolean,\n isDynamic: boolean,\n span: src.SourceSpan\n ): ASTv1.AttrValue {\n if (isDynamic) {\n if (isQuoted) {\n return this.assembleConcatenatedValue(parts);\n } else {\n assertPresentArray(parts);\n\n const [head, a] = parts;\n if (a === undefined || (a.type === 'TextNode' && a.chars === '/')) {\n return head;\n } else {\n throw generateSyntaxError(\n `An unquoted attribute value must be a string or a mustache, ` +\n `preceded by whitespace or a '=' character, and ` +\n `followed by whitespace, a '>' character, or '/>'`,\n span\n );\n }\n }\n } else if (isPresentArray(parts)) {\n return parts[0];\n } else {\n return b.text({ chars: '', loc: span });\n }\n }\n}\n\n/**\n ASTPlugins can make changes to the Glimmer template AST before\n compilation begins.\n*/\nexport interface ASTPluginBuilder<TEnv extends ASTPluginEnvironment = ASTPluginEnvironment> {\n (env: TEnv): ASTPlugin;\n}\n\nexport interface ASTPlugin {\n name: string;\n visitor: NodeVisitor;\n}\n\nexport interface ASTPluginEnvironment {\n meta?: object | undefined;\n syntax: Syntax;\n}\n\ninterface HandlebarsParseOptions {\n srcName?: string;\n ignoreStandalone?: boolean;\n}\n\nexport interface TemplateIdFn {\n (src: string): Nullable<string>;\n}\n\nexport interface PrecompileOptions extends PreprocessOptions {\n id?: TemplateIdFn;\n\n /**\n * Additional non-native keywords.\n *\n * Local variables (block params or lexical scope) always takes precedence,\n * but otherwise, suitable free variable candidates (e.g. those are not part\n * of a path) are matched against this list and turned into keywords.\n *\n * In strict mode compilation, keywords suppresses the undefined reference\n * error and will be resolved by the runtime environment.\n *\n * In loose mode, keywords are currently ignored and since all free variables\n * are already resolved by the runtime environment.\n */\n keywords?: readonly string[];\n\n /**\n * In loose mode, this hook allows embedding environments to customize the name of an\n * angle-bracket component. In practice, this means that `<HelloWorld />` in Ember is\n * compiled by Glimmer as an invocation of a component named `hello-world`.\n *\n * It's a little weird that this is needed in addition to the resolver, but it's a\n * classic-only feature and it seems fine to leave it alone for classic consumers.\n */\n customizeComponentName?: ((input: string) => string) | undefined;\n}\n\nexport interface PrecompileOptionsWithLexicalScope extends PrecompileOptions {\n lexicalScope: (variable: string) => boolean;\n\n /**\n * If `emit.debugSymbols` is set to `true`, the name of lexical local variables\n * will be included in the wire format.\n */\n emit?:\n | {\n debugSymbols?: boolean;\n }\n | undefined;\n}\n\nexport interface PreprocessOptions {\n strictMode?: boolean | undefined;\n locals?: string[] | undefined;\n meta?:\n | {\n moduleName?: string | undefined;\n }\n | undefined;\n plugins?:\n | {\n ast?: ASTPluginBuilder[] | undefined;\n }\n | undefined;\n parseOptions?: HandlebarsParseOptions | undefined;\n customizeComponentName?: ((input: string) => string) | undefined;\n\n /**\n Useful for specifying a group of options together.\n\n When `'codemod'` we disable all whitespace control in handlebars\n (to preserve as much as possible) and we also avoid any\n escaping/unescaping of HTML entity codes.\n */\n mode?: 'codemod' | 'precompile' | undefined;\n}\n\nexport interface Syntax {\n parse: typeof preprocess;\n builders: typeof publicBuilder;\n print: typeof print;\n traverse: typeof traverse;\n Walker: typeof Walker;\n}\n\nconst syntax: Syntax = {\n parse: preprocess,\n builders: publicBuilder,\n print,\n traverse,\n Walker,\n};\n\nclass CodemodEntityParser extends EntityParser {\n // match upstream types, but never match an entity\n constructor() {\n super({});\n }\n\n override parse(): string | undefined {\n return undefined;\n }\n}\n\nexport function preprocess(\n input: string | src.Source | HBS.Program,\n options: PreprocessOptions = {}\n): ASTv1.Template {\n let mode = options.mode || 'precompile';\n\n let source: src.Source;\n let ast: HBS.Program;\n if (typeof input === 'string') {\n source = new src.Source(input, options.meta?.moduleName);\n\n if (mode === 'codemod') {\n ast = parseWithoutProcessing(input, options.parseOptions) as HBS.Program;\n } else {\n ast = parse(input, options.parseOptions) as HBS.Program;\n }\n } else if (input instanceof src.Source) {\n source = input;\n\n if (mode === 'codemod') {\n ast = parseWithoutProcessing(input.source, options.parseOptions) as HBS.Program;\n } else {\n ast = parse(input.source, options.parseOptions) as HBS.Program;\n }\n } else {\n source = new src.Source('', options.meta?.moduleName);\n ast = input;\n }\n\n let entityParser = undefined;\n if (mode === 'codemod') {\n entityParser = new CodemodEntityParser();\n }\n\n let offsets = src.SourceSpan.forCharPositions(source, 0, source.source.length);\n ast.loc = {\n source: '(program)',\n start: offsets.startPosition,\n end: offsets.endPosition,\n };\n\n let template = new TokenizerEventHandlers(source, entityParser, mode).parse(\n ast,\n options.locals ?? []\n );\n\n if (options.plugins?.ast) {\n for (const transform of options.plugins.ast) {\n let env: ASTPluginEnvironment = assign({}, options, { syntax }, { plugins: undefined });\n\n let pluginResult = transform(env);\n\n traverse(template, pluginResult.visitor);\n }\n }\n\n return template;\n}\n","import type * as ASTv1 from './v1/api';\n\nimport { isKeyword } from './keywords';\nimport { preprocess } from './parser/tokenizer-event-handlers';\nimport traverse from './traversal/traverse';\n\ninterface GetTemplateLocalsOptions {\n includeKeywords?: boolean;\n includeHtmlElements?: boolean;\n}\n\n/**\n * Gets the correct Token from the Node based on it's type\n */\nfunction getPathName(\n node: ASTv1.Node,\n scopedTokens: string[],\n options: GetTemplateLocalsOptions\n): string | void {\n if (node.type === 'PathExpression') {\n if (node.head.type === 'AtHead' || node.head.type === 'ThisHead') {\n return;\n }\n\n const possbleToken = node.head.name;\n\n if (scopedTokens.indexOf(possbleToken) === -1) {\n return possbleToken;\n }\n } else if (node.type === 'ElementNode') {\n const { tag } = node;\n\n const char = tag.charAt(0);\n\n if (char === ':' || char === '@') {\n return;\n }\n\n if (!options.includeHtmlElements && tag.indexOf('.') === -1 && tag.toLowerCase() === tag) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- @fixme\n if (tag.substr(0, 5) === 'this.') {\n return;\n }\n\n // the tag may be from a yielded object\n // example:\n // <x.button>\n // An ElementNode does not parse the \"tag\" in to a PathExpression\n // so we have to split on `.`, just like how `this` presence is checked.\n if (tag.includes('.')) {\n let [potentialLocal] = tag.split('.') as [string, ...string[]];\n\n if (scopedTokens.includes(potentialLocal)) return;\n }\n\n if (scopedTokens.includes(tag)) return;\n\n return tag;\n }\n}\n\n/**\n * Adds tokens to the tokensSet based on their node.type\n */\nfunction addTokens(\n tokensSet: Set<string>,\n node: ASTv1.Node,\n scopedTokens: string[],\n options: GetTemplateLocalsOptions\n) {\n const maybePathName = getPathName(node, scopedTokens, options);\n\n if (maybePathName !== undefined && maybePathName[0] !== '@') {\n const maybeFirstPathSegment = maybePathName.split('.')[0];\n if (maybeFirstPathSegment && !scopedTokens.includes(maybeFirstPathSegment)) {\n tokensSet.add(maybeFirstPathSegment);\n }\n }\n}\n\n/**\n * Parses and traverses a given handlebars html template to extract all template locals\n * referenced that could possible come from the parent scope. Can exclude known keywords\n * optionally.\n */\nexport function getTemplateLocals(\n html: string,\n options: GetTemplateLocalsOptions = {\n includeHtmlElements: false,\n includeKeywords: false,\n }\n): string[] {\n const ast = preprocess(html);\n const tokensSet = new Set<string>();\n const scopedTokens: string[] = [];\n\n traverse(ast, {\n Block: {\n enter({ blockParams }) {\n blockParams.forEach((param) => {\n scopedTokens.push(param);\n });\n },\n\n exit({ blockParams }) {\n blockParams.forEach(() => {\n scopedTokens.pop();\n });\n },\n },\n\n ElementNode: {\n enter(node) {\n node.blockParams.forEach((param) => {\n scopedTokens.push(param);\n });\n addTokens(tokensSet, node, scopedTokens, options);\n },\n\n exit({ blockParams }) {\n blockParams.forEach(() => {\n scopedTokens.pop();\n });\n },\n },\n\n PathExpression(node) {\n addTokens(tokensSet, node, scopedTokens, options);\n },\n });\n\n let tokens: string[] = [];\n\n tokensSet.forEach((s) => tokens.push(s));\n\n if (!options.includeKeywords) {\n tokens = tokens.filter((token) => !isKeyword(token));\n }\n\n return tokens;\n}\n","import { setLocalDebugType } from '@glimmer/debug-util';\nimport { assign } from '@glimmer/util';\n\nimport type { SourceSpan } from '../../source/span';\n\nexport interface BaseNodeFields {\n loc: SourceSpan;\n}\n\n/**\n * This is a convenience function for creating ASTv2 nodes, with an optional name and the node's\n * options.\n *\n * ```ts\n * export class HtmlText extends node('HtmlText').fields<{ chars: string }>() {}\n * ```\n *\n * This creates a new ASTv2 node with the name `'HtmlText'` and one field `chars: string` (in\n * addition to a `loc: SourceOffsets` field, which all nodes have).\n *\n * ```ts\n * export class Args extends node().fields<{\n * positional: PositionalArguments;\n * named: NamedArguments\n * }>() {}\n * ```\n *\n * This creates a new un-named ASTv2 node with two fields (`positional: Positional` and `named:\n * Named`, in addition to the generic `loc: SourceOffsets` field).\n *\n * Once you create a node using `node`, it is instantiated with all of its fields (including `loc`):\n *\n * ```ts\n * new HtmlText({ loc: offsets, chars: someString });\n * ```\n */\nexport function node(): {\n fields<Fields extends object>(): NodeConstructor<Fields & BaseNodeFields>;\n};\nexport function node<T extends string>(\n name: T\n): {\n fields<Fields extends object>(): TypedNodeConstructor<T, Fields & BaseNodeFields>;\n};\n\nexport function node<T extends string>(\n name?: T\n):\n | {\n fields<Fields extends object>(): TypedNodeConstructor<T, Fields & BaseNodeFields>;\n }\n | {\n fields<Fields extends object>(): NodeConstructor<Fields & BaseNodeFields>;\n } {\n if (name !== undefined) {\n const type = name;\n return {\n fields<Fields extends object>(): TypedNodeConstructor<T, BaseNodeFields & Fields> {\n return class {\n // SAFETY: initialized via `assign` in the constructor.\n declare readonly loc: SourceSpan;\n readonly type: T;\n\n constructor(fields: BaseNodeFields & Fields) {\n this.type = type;\n assign(this, fields);\n\n setLocalDebugType('syntax:mir:node', this);\n }\n } as TypedNodeConstructor<T, BaseNodeFields & Fields>;\n },\n };\n } else {\n return {\n fields<Fields>(): NodeConstructor<Fields & BaseNodeFields> {\n return class {\n // SAFETY: initialized via `assign` in the constructor.\n declare readonly loc: SourceSpan;\n\n constructor(fields: BaseNodeFields & Fields) {\n assign(this, fields);\n }\n } as NodeConstructor<BaseNodeFields & Fields>;\n },\n };\n }\n}\n\nexport interface NodeConstructor<Fields> {\n new (fields: Fields): Readonly<Fields>;\n}\n\ntype TypedNode<T extends string, Fields> = {\n type: T;\n} & Readonly<Fields>;\n\nexport interface TypedNodeConstructor<T extends string, Fields> {\n new (options: Fields): TypedNode<T, Fields>;\n}\n","import type { SourceSlice } from '../../source/slice';\nimport type { SourceSpan } from '../../source/span';\nimport type { ExpressionNode } from './expr';\n\nimport { node } from './node';\n\n/**\n * Corresponds to syntaxes with positional and named arguments:\n *\n * - SubExpression\n * - Invoking Append\n * - Invoking attributes\n * - InvokeBlock\n *\n * If `Args` is empty, the `SourceOffsets` for this node should be the collapsed position\n * immediately after the parent call node's `callee`.\n */\nexport class Args extends node().fields<{\n positional: PositionalArguments;\n named: NamedArguments;\n}>() {\n static empty(loc: SourceSpan): Args {\n return new Args({\n loc,\n positional: PositionalArguments.empty(loc),\n named: NamedArguments.empty(loc),\n });\n }\n\n static named(named: NamedArguments): Args {\n return new Args({\n loc: named.loc,\n positional: PositionalArguments.empty(named.loc.collapse('end')),\n named,\n });\n }\n\n nth(offset: number): ExpressionNode | null {\n return this.positional.nth(offset);\n }\n\n get(name: string): ExpressionNode | null {\n return this.named.get(name);\n }\n\n isEmpty(): boolean {\n return this.positional.isEmpty() && this.named.isEmpty();\n }\n}\n\n/**\n * Corresponds to positional arguments.\n *\n * If `PositionalArguments` is empty, the `SourceOffsets` for this node should be the collapsed\n * position immediately after the parent call node's `callee`.\n */\nexport class PositionalArguments extends node().fields<{\n exprs: readonly ExpressionNode[];\n}>() {\n static empty(loc: SourceSpan): PositionalArguments {\n return new PositionalArguments({\n loc,\n exprs: [],\n });\n }\n\n get size(): number {\n return this.exprs.length;\n }\n\n nth(offset: number): ExpressionNode | null {\n return this.exprs[offset] || null;\n }\n\n isEmpty(): boolean {\n return this.exprs.length === 0;\n }\n}\n\n/**\n * Corresponds to named arguments.\n *\n * If `PositionalArguments` and `NamedArguments` are empty, the `SourceOffsets` for this node should\n * be the same as the `Args` node that contains this node.\n *\n * If `PositionalArguments` is not empty but `NamedArguments` is empty, the `SourceOffsets` for this\n * node should be the collapsed position immediately after the last positional argument.\n */\nexport class NamedArguments extends node().fields<{\n entries: readonly NamedArgument[];\n}>() {\n static empty(loc: SourceSpan): NamedArguments {\n return new NamedArguments({\n loc,\n entries: [],\n });\n }\n\n get size(): number {\n return this.entries.length;\n }\n\n get(name: string): ExpressionNode | null {\n let entry = this.entries.filter((e) => e.name.chars === name)[0];\n\n return entry ? entry.value : null;\n }\n\n isEmpty(): boolean {\n return this.entries.length === 0;\n }\n}\n\n/**\n * Corresponds to a single named argument.\n *\n * ```hbs\n * x=<expr>\n * ```\n */\nexport class NamedArgument {\n readonly loc: SourceSpan;\n readonly name: SourceSlice;\n readonly value: ExpressionNode;\n\n constructor(options: { name: SourceSlice; value: ExpressionNode }) {\n this.loc = options.name.loc.extend(options.value.loc);\n this.name = options.name;\n this.value = options.value;\n }\n}\n","import type { SourceSlice } from '../../source/slice';\nimport type { CallFields } from './base';\nimport type { ExpressionNode } from './expr';\n\nimport { NamedArgument } from './args';\nimport { node } from './node';\n\n/**\n * Attr nodes look like HTML attributes, but are classified as:\n *\n * 1. `HtmlAttr`, which means a regular HTML attribute in Glimmer\n * 2. `SplatAttr`, which means `...attributes`\n * 3. `ComponentArg`, which means an attribute whose name begins with `@`, and it is therefore a\n * component argument.\n */\nexport type AttrNode = HtmlAttr | SplatAttr | ComponentArg;\n\n/**\n * `HtmlAttr` and `SplatAttr` are grouped together because the order of the `SplatAttr` node,\n * relative to other attributes, matters.\n */\nexport type HtmlOrSplatAttr = HtmlAttr | SplatAttr;\n\n/**\n * \"Attr Block\" nodes are allowed inside an open element tag in templates. They interact with the\n * element (or component).\n */\nexport type AttrBlockNode = AttrNode | ElementModifier;\n\n/**\n * `HtmlAttr` nodes are valid HTML attributes, with or without a value.\n *\n * Exceptions:\n *\n * - `...attributes` is `SplatAttr`\n * - `@x=<value>` is `ComponentArg`\n */\nexport class HtmlAttr extends node('HtmlAttr').fields<AttrNodeOptions>() {}\n\nexport class SplatAttr extends node('SplatAttr').fields<{ symbol: number }>() {}\n\n/**\n * Corresponds to an argument passed by a component (`@x=<value>`)\n */\nexport class ComponentArg extends node().fields<AttrNodeOptions>() {\n /**\n * Convert the component argument into a named argument node\n */\n toNamedArgument(): NamedArgument {\n return new NamedArgument({\n name: this.name,\n value: this.value,\n });\n }\n}\n\n/**\n * An `ElementModifier` is just a normal call node in modifier position.\n */\nexport class ElementModifier extends node('ElementModifier').fields<CallFields>() {}\n\nexport interface AttrNodeOptions {\n name: SourceSlice;\n value: ExpressionNode;\n trusting: boolean;\n}\n","import type { SourceSlice } from '../../source/slice';\nimport type { SymbolTable } from '../../symbol-table';\nimport type { ComponentArg, ElementModifier, HtmlOrSplatAttr } from './attr-block';\nimport type { CallFields } from './base';\nimport type { ExpressionNode } from './expr';\nimport type { NamedBlock, NamedBlocks } from './internal-node';\nimport type { BaseNodeFields } from './node';\n\nimport { SpanList } from '../../source/span-list';\nimport { Args, NamedArguments } from './args';\nimport { node } from './node';\n\n/**\n * Content Nodes are allowed in content positions in templates. They correspond to behavior in the\n * [Data][data] tokenization state in HTML.\n *\n * [data]: https://html.spec.whatwg.org/multipage/parsing.html#data-state\n */\nexport type ContentNode =\n | HtmlText\n | HtmlComment\n | AppendContent\n | InvokeBlock\n | InvokeComponent\n | SimpleElement\n | GlimmerComment;\n\nexport class GlimmerComment extends node('GlimmerComment').fields<{ text: SourceSlice }>() {}\nexport class HtmlText extends node('HtmlText').fields<{ chars: string }>() {}\nexport class HtmlComment extends node('HtmlComment').fields<{ text: SourceSlice }>() {}\n\nexport class AppendContent extends node('AppendContent').fields<{\n value: ExpressionNode;\n trusting: boolean;\n table: SymbolTable;\n}>() {\n get callee(): ExpressionNode {\n if (this.value.type === 'Call') {\n return this.value.callee;\n } else {\n return this.value;\n }\n }\n\n get args(): Args {\n if (this.value.type === 'Call') {\n return this.value.args;\n } else {\n return Args.empty(this.value.loc.collapse('end'));\n }\n }\n}\n\nexport class InvokeBlock extends node('InvokeBlock').fields<\n CallFields & { blocks: NamedBlocks }\n>() {}\n\ninterface InvokeComponentFields {\n callee: ExpressionNode;\n blocks: NamedBlocks;\n attrs: readonly HtmlOrSplatAttr[];\n componentArgs: readonly ComponentArg[];\n modifiers: readonly ElementModifier[];\n}\n\n/**\n * Corresponds to a component invocation. When the content of a component invocation contains no\n * named blocks, `blocks` contains a single named block named `\"default\"`. When a component\n * invocation is self-closing, `blocks` is empty.\n */\nexport class InvokeComponent extends node('InvokeComponent').fields<InvokeComponentFields>() {\n get args(): Args {\n let entries = this.componentArgs.map((a) => a.toNamedArgument());\n\n return Args.named(\n new NamedArguments({\n loc: SpanList.range(entries, this.callee.loc.collapse('end')),\n entries,\n })\n );\n }\n}\n\ninterface SimpleElementOptions extends BaseNodeFields {\n tag: SourceSlice;\n body: readonly ContentNode[];\n attrs: readonly HtmlOrSplatAttr[];\n componentArgs: readonly ComponentArg[];\n modifiers: readonly ElementModifier[];\n}\n\n/**\n * Corresponds to a simple HTML element. The AST allows component arguments and modifiers to support\n * future extensions.\n */\nexport class SimpleElement extends node('SimpleElement').fields<SimpleElementOptions>() {\n get args(): Args {\n let entries = this.componentArgs.map((a) => a.toNamedArgument());\n\n return Args.named(\n new NamedArguments({\n loc: SpanList.range(entries, this.tag.loc.collapse('end')),\n entries,\n })\n );\n }\n}\n\nexport type ElementNode = NamedBlock | InvokeComponent | SimpleElement;\n","import type { PresentArray } from '@glimmer/interfaces';\n\nimport type { CallFields } from './base';\nimport type { VariableReference } from './refs';\n\nimport { SourceSlice } from '../../source/slice';\nimport { node } from './node';\n\n/**\n * A Handlebars literal.\n *\n * {@link https://handlebarsjs.com/guide/expressions.html#literal-segments}\n */\nexport type LiteralValue = string | boolean | number | undefined | null;\n\nexport interface LiteralTypes {\n string: string;\n boolean: boolean;\n number: number;\n null: null;\n undefined: undefined;\n}\n\n/**\n * Corresponds to a Handlebars literal.\n *\n * @see {LiteralValue}\n */\nexport class LiteralExpression extends node('Literal').fields<{ value: LiteralValue }>() {\n toSlice(this: StringLiteral): SourceSlice {\n return new SourceSlice({ loc: this.loc, chars: this.value });\n }\n}\n\nexport type StringLiteral = LiteralExpression & { value: string };\n\n/**\n * Returns true if an input {@see ExpressionNode} is a literal.\n */\nexport function isLiteral<K extends keyof LiteralTypes = keyof LiteralTypes>(\n node: ExpressionNode,\n kind?: K\n): node is StringLiteral {\n if (node.type === 'Literal') {\n if (kind === undefined) {\n return true;\n } else if (kind === 'null') {\n return node.value === null;\n } else {\n return typeof node.value === kind;\n }\n } else {\n return false;\n }\n}\n\n/**\n * Corresponds to a path in expression position.\n *\n * ```hbs\n * this\n * this.x\n * @x\n * @x.y\n * x\n * x.y\n * ```\n */\nexport class PathExpression extends node('Path').fields<{\n ref: VariableReference;\n tail: readonly SourceSlice[];\n}>() {}\n\n/**\n * Corresponds to a known strict-mode keyword. It behaves similarly to a\n * PathExpression with a FreeVarReference, but implies StrictResolution and\n * is guaranteed to not have a tail, since `{{outlet.foo}}` would have been\n * illegal.\n */\nexport class KeywordExpression extends node('Keyword').fields<{\n name: string;\n symbol: number;\n}>() {}\n\n/**\n * Corresponds to a parenthesized call expression.\n *\n * ```hbs\n * (x)\n * (x.y)\n * (x y)\n * (x.y z)\n * ```\n */\nexport class CallExpression extends node('Call').fields<CallFields>() {}\n\n/**\n * Corresponds to an interpolation in attribute value position.\n *\n * ```hbs\n * <a href=\"{{url}}.html\"\n * ```\n */\nexport class InterpolateExpression extends node('Interpolate').fields<{\n parts: PresentArray<ExpressionNode>;\n}>() {}\n\nexport type ExpressionNode =\n | LiteralExpression\n | PathExpression\n | KeywordExpression\n | CallExpression\n | InterpolateExpression;\n","import type { SourceSlice } from '../../source/slice';\nimport type { BlockSymbolTable, ProgramSymbolTable } from '../../symbol-table';\nimport type { ComponentArg, ElementModifier, HtmlOrSplatAttr } from './attr-block';\nimport type { GlimmerParentNodeOptions } from './base';\nimport type { BaseNodeFields } from './node';\n\nimport { SpanList } from '../../source/span-list';\nimport { Args, NamedArguments } from './args';\nimport { node } from './node';\n\n/**\n * Corresponds to an entire template.\n */\nexport class Template extends node().fields<\n {\n table: ProgramSymbolTable;\n } & GlimmerParentNodeOptions\n>() {}\n\n/**\n * Represents a block. In principle this could be merged with `NamedBlock`, because all cases\n * involving blocks have at least a notional name.\n */\nexport class Block extends node().fields<\n { scope: BlockSymbolTable } & GlimmerParentNodeOptions\n>() {}\n\n/**\n * Corresponds to a collection of named blocks.\n */\nexport class NamedBlocks extends node().fields<{ blocks: readonly NamedBlock[] }>() {\n /**\n * Get the `NamedBlock` for a given name.\n */\n get(name: 'default'): NamedBlock;\n get(name: string): NamedBlock | null;\n get(name: string): NamedBlock | null {\n return this.blocks.filter((block) => block.name.chars === name)[0] || null;\n }\n}\n\nexport interface NamedBlockFields extends BaseNodeFields {\n name: SourceSlice;\n block: Block;\n\n // these are not currently supported, but are here for future expansion\n attrs: readonly HtmlOrSplatAttr[];\n componentArgs: readonly ComponentArg[];\n modifiers: readonly ElementModifier[];\n}\n\n/**\n * Corresponds to a single named block. This is used for anonymous named blocks (`default` and\n * `else`).\n */\nexport class NamedBlock extends node().fields<NamedBlockFields>() {\n get args(): Args {\n let entries = this.componentArgs.map((a) => a.toNamedArgument());\n\n return Args.named(\n new NamedArguments({\n loc: SpanList.range(entries, this.name.loc.collapse('end')),\n entries,\n })\n );\n }\n}\n","import type { SourceSlice } from '../../source/slice';\nimport type { FreeVarResolution } from './resolution';\n\nimport { node } from './node';\n\n/**\n * Corresponds to `this` at the head of an expression.\n */\nexport class ThisReference extends node('This').fields() {}\n\n/**\n * Corresponds to `@<ident>` at the beginning of an expression.\n */\nexport class ArgReference extends node('Arg').fields<{ name: SourceSlice; symbol: number }>() {}\n\n/**\n * Corresponds to `<ident>` at the beginning of an expression, when `<ident>` is in the current\n * block's scope.\n */\nexport class LocalVarReference extends node('Local').fields<{\n name: string;\n isTemplateLocal: boolean;\n symbol: number;\n}>() {}\n\n/**\n * Corresponds to `<ident>` at the beginning of an expression, when `<ident>` is *not* in the\n * current block's scope.\n *\n * The `resolution: FreeVarResolution` field describes how to resolve the free variable.\n *\n * Note: In strict mode, it must always be a variable that is in a concrete JavaScript scope that\n * the template will be installed into.\n */\nexport class FreeVarReference extends node('Free').fields<{\n name: string;\n resolution: FreeVarResolution;\n symbol: number;\n}>() {}\n\nexport type VariableReference = ThisReference | ArgReference | LocalVarReference | FreeVarReference;\n","/// FreeVarNamespace ///\n\nexport type HELPER_VAR_NS = 'Helper';\nexport const HELPER_VAR_NS: HELPER_VAR_NS = 'Helper';\nexport type MODIFIER_VAR_NS = 'Modifier';\nexport const MODIFIER_VAR_NS: MODIFIER_VAR_NS = 'Modifier';\nexport type COMPONENT_VAR_NS = 'Component';\nexport const COMPONENT_VAR_NS: COMPONENT_VAR_NS = 'Component';\n\nexport type FreeVarNamespace = HELPER_VAR_NS | MODIFIER_VAR_NS | COMPONENT_VAR_NS;\n","/**\n * A free variable is resolved according to a resolution rule:\n *\n * 1. Strict resolution\n * 2. Namespaced resolution\n */\n\nimport type { GetContextualFreeOpcode } from '@glimmer/interfaces';\nimport { SexpOpcodes } from '@glimmer/wire-format';\n\nimport type { FreeVarNamespace } from './constants';\n\nimport { COMPONENT_VAR_NS, HELPER_VAR_NS, MODIFIER_VAR_NS } from './constants';\n\n/**\n * Strict resolution is used:\n *\n * 1. in a strict mode template\n * 2. in an local variable invocation with dot paths\n */\nexport const STRICT_RESOLUTION = {\n resolution: (): GetContextualFreeOpcode => SexpOpcodes.GetStrictKeyword,\n serialize: (): SerializedResolution => 'Strict',\n isAngleBracket: false as const,\n};\n\nexport type StrictResolution = typeof STRICT_RESOLUTION;\n\nexport const HTML_RESOLUTION = {\n ...STRICT_RESOLUTION,\n isAngleBracket: true as const,\n};\n\nexport type HtmlResolution = typeof HTML_RESOLUTION;\n\nexport function isStrictResolution(value: unknown): value is StrictResolution {\n return value === STRICT_RESOLUTION;\n}\n\n/**\n * A `LooseModeResolution` includes one or more namespaces to resolve the variable in\n *\n * In practice, there are a limited number of possible combinations of these degrees of freedom,\n * and they are captured by the `Namespaces` union below.\n */\nexport class LooseModeResolution {\n /**\n * Namespaced resolution is used in an unambiguous syntax position:\n *\n * 1. `(sexp)` (namespace: `Helper`)\n * 2. `{{#block}}` (namespace: `Component`)\n * 3. `<a {{modifier}}>` (namespace: `Modifier`)\n * 4. `<Component />` (namespace: `Component`)\n */\n static namespaced(namespace: FreeVarNamespace, isAngleBracket = false): LooseModeResolution {\n return new LooseModeResolution([namespace], isAngleBracket);\n }\n\n /**\n * Append resolution is used when the variable should be resolved in both the `component` and\n * `helper` namespaces.\n *\n * ```hbs\n * {{x}}\n * ```\n *\n * ```hbs\n * {{x y}}\n * ```\n *\n * ^ In either case, `x` should be resolved in the `component` and `helper` namespaces.\n */\n static append(): LooseModeResolution {\n return new LooseModeResolution([COMPONENT_VAR_NS, HELPER_VAR_NS]);\n }\n\n /**\n * Trusting append resolution is used when the variable should be resolved only in the\n * `helper` namespaces.\n *\n * ```hbs\n * {{{x}}}\n * ```\n *\n * ```hbs\n * {{{x y}}}\n * ```\n *\n * ^ In either case, `x` should be resolved in the `helper` namespace.\n */\n static trustingAppend(): LooseModeResolution {\n return this.namespaced(HELPER_VAR_NS);\n }\n\n constructor(\n readonly namespaces: Namespaces,\n readonly isAngleBracket = false\n ) {}\n\n resolution(): GetContextualFreeOpcode {\n if (this.namespaces.length === 1) {\n switch (this.namespaces[0]) {\n case HELPER_VAR_NS:\n return SexpOpcodes.GetFreeAsHelperHead;\n case MODIFIER_VAR_NS:\n return SexpOpcodes.GetFreeAsModifierHead;\n case COMPONENT_VAR_NS:\n return SexpOpcodes.GetFreeAsComponentHead;\n }\n } else {\n return SexpOpcodes.GetFreeAsComponentOrHelperHead;\n }\n }\n\n serialize(): SerializedResolution {\n if (this.namespaces.length === 1) {\n return this.namespaces[0];\n } else {\n return 'ComponentOrHelper';\n }\n }\n}\n\nexport const HELPER_NAMESPACE = HELPER_VAR_NS;\nexport const MODIFIER_NAMESPACE = MODIFIER_VAR_NS;\nexport const COMPONENT_NAMESPACE = COMPONENT_VAR_NS;\n\n/**\n * A `Namespaced` must be resolved in one or more namespaces.\n *\n * ```hbs\n * <X />\n * ```\n *\n * ^ `X` is resolved in the `component` namespace\n *\n * ```hbs\n * (x)\n * ```\n *\n * ^ `x` is resolved in the `helper` namespace\n *\n * ```hbs\n * <a {{x}} />\n * ```\n *\n * ^ `x` is resolved in the `modifier` namespace\n */\ntype Namespaces =\n | [HELPER_VAR_NS]\n | [MODIFIER_VAR_NS]\n | [COMPONENT_VAR_NS]\n | [COMPONENT_VAR_NS, HELPER_VAR_NS];\n\nexport type FreeVarResolution = StrictResolution | HtmlResolution | LooseModeResolution;\n\n// Serialization\nexport type SerializedResolution =\n | 'Strict'\n | 'Helper'\n | 'Modifier'\n | 'Component'\n | 'ComponentOrHelper';\n\nexport function loadResolution(resolution: SerializedResolution): FreeVarResolution {\n if (resolution === 'Strict') {\n return STRICT_RESOLUTION;\n } else if (resolution === 'ComponentOrHelper') {\n return LooseModeResolution.append();\n } else {\n return LooseModeResolution.namespaced(resolution as FreeVarNamespace);\n }\n}\n","import type { Core, Dict } from '@glimmer/interfaces';\nimport { setLocalDebugType, unwrap } from '@glimmer/debug-util';\nimport { dict } from '@glimmer/util';\nimport { SexpOpcodes } from '@glimmer/wire-format';\n\nimport * as ASTv2 from './v2/api';\n\nexport interface Upvar {\n readonly name: string;\n readonly resolution: ASTv2.FreeVarResolution;\n}\n\ninterface SymbolTableOptions {\n customizeComponentName: (input: string) => string;\n lexicalScope: (variable: string) => boolean;\n}\n\nexport abstract class SymbolTable {\n static top(\n locals: readonly string[],\n keywords: readonly string[],\n options: SymbolTableOptions\n ): ProgramSymbolTable {\n return new ProgramSymbolTable(locals, keywords, options);\n }\n\n abstract root(): ProgramSymbolTable;\n\n abstract has(name: string): boolean;\n abstract get(name: string): [symbol: number, isRoot: boolean];\n\n abstract hasKeyword(name: string): boolean;\n abstract getKeyword(name: string): number;\n\n abstract hasLexical(name: string): boolean;\n\n abstract getLocalsMap(): Dict<number>;\n abstract getDebugInfo(): Core.DebugSymbols;\n\n abstract allocateFree(name: string, resolution: ASTv2.FreeVarResolution): number;\n abstract allocateNamed(name: string): number;\n abstract allocateBlock(name: string): number;\n abstract allocate(identifier: string): number;\n\n child(locals: string[]): BlockSymbolTable {\n let symbols = locals.map((name) => this.allocate(name));\n return new BlockSymbolTable(this, locals, symbols);\n }\n}\n\nexport class ProgramSymbolTable extends SymbolTable {\n constructor(\n private templateLocals: readonly string[],\n private keywords: readonly string[],\n private options: SymbolTableOptions\n ) {\n super();\n\n setLocalDebugType('syntax:symbol-table:program', this, {\n debug: () => ({\n templateLocals: this.templateLocals,\n keywords: this.keywords,\n symbols: this.symbols,\n upvars: this.upvars,\n named: this.named,\n blocks: this.blocks,\n }),\n });\n }\n\n readonly symbols: string[] = [];\n readonly upvars: string[] = [];\n\n private size = 1;\n readonly named = dict<number>();\n readonly blocks = dict<number>();\n readonly usedTemplateLocals: string[] = [];\n\n root(): this {\n return this;\n }\n\n hasLexical(name: string): boolean {\n return this.options.lexicalScope(name);\n }\n\n hasKeyword(name: string): boolean {\n return this.keywords.includes(name);\n }\n\n getKeyword(name: string): number {\n return this.allocateFree(name, ASTv2.STRICT_RESOLUTION);\n }\n\n getUsedTemplateLocals(): string[] {\n return this.usedTemplateLocals;\n }\n\n has(name: string): boolean {\n return this.templateLocals.includes(name);\n }\n\n get(name: string): [number, boolean] {\n let index = this.usedTemplateLocals.indexOf(name);\n\n if (index !== -1) {\n return [index, true];\n }\n\n index = this.usedTemplateLocals.length;\n this.usedTemplateLocals.push(name);\n return [index, true];\n }\n\n getLocalsMap(): Dict<number> {\n return dict();\n }\n\n getDebugInfo(): Core.DebugSymbols {\n return [this.getLocalsMap(), this.named];\n }\n\n allocateFree(name: string, resolution: ASTv2.FreeVarResolution): number {\n // If the name in question is an uppercase (i.e. angle-bracket) component invocation, run\n // the optional `customizeComponentName` function provided to the precompiler.\n if (\n resolution.resolution() === SexpOpcodes.GetFreeAsComponentHead &&\n resolution.isAngleBracket\n ) {\n name = this.options.customizeComponentName(name);\n }\n\n let index = this.upvars.indexOf(name);\n\n if (index !== -1) {\n return index;\n }\n\n index = this.upvars.length;\n this.upvars.push(name);\n return index;\n }\n\n allocateNamed(name: string): number {\n let named = this.named[name];\n\n if (!named) {\n named = this.named[name] = this.allocate(name);\n }\n\n return named;\n }\n\n allocateBlock(name: string): number {\n if (name === 'inverse') {\n name = 'else';\n }\n\n let block = this.blocks[name];\n\n if (!block) {\n block = this.blocks[name] = this.allocate(`&${name}`);\n }\n\n return block;\n }\n\n allocate(identifier: string): number {\n this.symbols.push(identifier);\n return this.size++;\n }\n}\n\nexport class BlockSymbolTable extends SymbolTable {\n constructor(\n private parent: SymbolTable,\n public symbols: string[],\n public slots: number[]\n ) {\n super();\n }\n\n root(): ProgramSymbolTable {\n return this.parent.root();\n }\n\n get locals(): string[] {\n return this.symbols;\n }\n\n hasLexical(name: string): boolean {\n return this.parent.hasLexical(name);\n }\n\n getKeyword(name: string): number {\n return this.parent.getKeyword(name);\n }\n\n hasKeyword(name: string): boolean {\n return this.parent.hasKeyword(name);\n }\n\n has(name: string): boolean {\n return this.symbols.indexOf(name) !== -1 || this.parent.has(name);\n }\n\n get(name: string): [number, boolean] {\n let local = this.#get(name);\n return local ? [local, false] : this.parent.get(name);\n }\n\n #get(name: string): number | null {\n let slot = this.symbols.indexOf(name);\n return slot === -1 ? null : unwrap(this.slots[slot]);\n }\n\n getLocalsMap(): Dict<number> {\n let dict = this.parent.getLocalsMap();\n this.symbols.forEach((symbol) => (dict[symbol] = this.get(symbol)[0]));\n return dict;\n }\n\n getDebugInfo(): [locals: Record<string, number>, upvars: Record<string, number>] {\n const locals = this.getLocalsMap();\n const root = this.root();\n const named = root.named;\n\n return [{ ...locals, ...named }, Object.fromEntries(root.upvars.map((s, i) => [s, i]))];\n }\n\n allocateFree(name: string, resolution: ASTv2.FreeVarResolution): number {\n return this.parent.allocateFree(name, resolution);\n }\n\n allocateNamed(name: string): number {\n return this.parent.allocateNamed(name);\n }\n\n allocateBlock(name: string): number {\n return this.parent.allocateBlock(name);\n }\n\n allocate(identifier: string): number {\n return this.parent.allocate(identifier);\n }\n}\n","import type { PresentArray } from '@glimmer/interfaces';\nimport { assertPresentArray, localAssert } from '@glimmer/debug-util';\nimport { assign } from '@glimmer/util';\n\nimport type { SourceSpan } from '../source/span';\nimport type { BlockSymbolTable, ProgramSymbolTable, SymbolTable } from '../symbol-table';\n\nimport { SourceSlice } from '../source/slice';\nimport { SpanList } from '../source/span-list';\nimport * as ASTv2 from './api';\n\nexport interface CallParts {\n callee: ASTv2.CalleeNode;\n args: ASTv2.Args;\n}\n\nexport class Builder {\n // TEMPLATE //\n\n template(\n symbols: ProgramSymbolTable,\n body: ASTv2.ContentNode[],\n loc: SourceSpan\n ): ASTv2.Template {\n return new ASTv2.Template({\n table: symbols,\n body,\n loc,\n });\n }\n\n // INTERNAL (these nodes cannot be reached when doing general-purpose visiting) //\n\n block(symbols: BlockSymbolTable, body: ASTv2.ContentNode[], loc: SourceSpan): ASTv2.Block {\n return new ASTv2.Block({\n scope: symbols,\n body,\n loc,\n });\n }\n\n namedBlock(name: SourceSlice, block: ASTv2.Block, loc: SourceSpan): ASTv2.NamedBlock {\n return new ASTv2.NamedBlock({\n name,\n block,\n attrs: [],\n componentArgs: [],\n modifiers: [],\n loc,\n });\n }\n\n simpleNamedBlock(name: SourceSlice, block: ASTv2.Block, loc: SourceSpan): ASTv2.NamedBlock {\n return new BuildElement({\n selfClosing: false,\n attrs: [],\n componentArgs: [],\n modifiers: [],\n comments: [],\n }).named(name, block, loc);\n }\n\n slice(chars: string, loc: SourceSpan): SourceSlice {\n return new SourceSlice({\n loc,\n chars,\n });\n }\n\n args(\n positional: ASTv2.PositionalArguments,\n named: ASTv2.NamedArguments,\n loc: SourceSpan\n ): ASTv2.Args {\n return new ASTv2.Args({\n loc,\n positional,\n named,\n });\n }\n\n positional(exprs: ASTv2.ExpressionNode[], loc: SourceSpan): ASTv2.PositionalArguments {\n return new ASTv2.PositionalArguments({\n loc,\n exprs,\n });\n }\n\n namedArgument(key: SourceSlice, value: ASTv2.ExpressionNode): ASTv2.NamedArgument {\n return new ASTv2.NamedArgument({\n name: key,\n value,\n });\n }\n\n named(entries: ASTv2.NamedArgument[], loc: SourceSpan): ASTv2.NamedArguments {\n return new ASTv2.NamedArguments({\n loc,\n entries,\n });\n }\n\n attr(\n {\n name,\n value,\n trusting,\n }: { name: SourceSlice; value: ASTv2.ExpressionNode; trusting: boolean },\n loc: SourceSpan\n ): ASTv2.HtmlAttr {\n return new ASTv2.HtmlAttr({\n loc,\n name,\n value,\n trusting,\n });\n }\n\n splatAttr(symbol: number, loc: SourceSpan): ASTv2.SplatAttr {\n return new ASTv2.SplatAttr({\n symbol,\n loc,\n });\n }\n\n arg(\n {\n name,\n value,\n trusting,\n }: { name: SourceSlice; value: ASTv2.ExpressionNode; trusting: boolean },\n loc: SourceSpan\n ): ASTv2.ComponentArg {\n return new ASTv2.ComponentArg({\n name,\n value,\n trusting,\n loc,\n });\n }\n\n // EXPRESSIONS //\n\n path(head: ASTv2.VariableReference, tail: SourceSlice[], loc: SourceSpan): ASTv2.PathExpression {\n return new ASTv2.PathExpression({\n loc,\n ref: head,\n tail,\n });\n }\n\n keyword(name: string, symbol: number, loc: SourceSpan): ASTv2.KeywordExpression {\n return new ASTv2.KeywordExpression({\n loc,\n name,\n symbol,\n });\n }\n\n self(loc: SourceSpan): ASTv2.VariableReference {\n return new ASTv2.ThisReference({\n loc,\n });\n }\n\n at(name: string, symbol: number, loc: SourceSpan): ASTv2.VariableReference {\n // the `@` should be included so we have a complete source range\n localAssert(name[0] === '@', `call builders.at() with a string that starts with '@'`);\n\n return new ASTv2.ArgReference({\n loc,\n name: new SourceSlice({ loc, chars: name }),\n symbol,\n });\n }\n\n freeVar({\n name,\n context,\n symbol,\n loc,\n }: {\n name: string;\n context: ASTv2.FreeVarResolution;\n symbol: number;\n loc: SourceSpan;\n }): ASTv2.FreeVarReference {\n localAssert(\n name !== 'this',\n `You called builders.freeVar() with 'this'. Call builders.this instead`\n );\n localAssert(\n name[0] !== '@',\n `You called builders.freeVar() with '${name}'. Call builders.at('${name}') instead`\n );\n\n return new ASTv2.FreeVarReference({\n name,\n resolution: context,\n symbol,\n loc,\n });\n }\n\n localVar(\n name: string,\n symbol: number,\n isTemplateLocal: boolean,\n loc: SourceSpan\n ): ASTv2.VariableReference {\n localAssert(\n name[0] !== '@',\n `You called builders.var() with '${name}'. Call builders.at('${name}') instead`\n );\n\n return new ASTv2.LocalVarReference({\n loc,\n name,\n isTemplateLocal,\n symbol,\n });\n }\n\n sexp(parts: CallParts, loc: SourceSpan): ASTv2.CallExpression {\n return new ASTv2.CallExpression({\n loc,\n callee: parts.callee,\n args: parts.args,\n });\n }\n\n interpolate(parts: ASTv2.ExpressionNode[], loc: SourceSpan): ASTv2.InterpolateExpression {\n assertPresentArray(parts);\n\n return new ASTv2.InterpolateExpression({\n loc,\n parts,\n });\n }\n\n literal(value: string, loc: SourceSpan): ASTv2.LiteralExpression & { value: string };\n literal(value: number, loc: SourceSpan): ASTv2.LiteralExpression & { value: number };\n literal(value: boolean, loc: SourceSpan): ASTv2.LiteralExpression & { value: boolean };\n literal(value: null, loc: SourceSpan): ASTv2.LiteralExpression & { value: null };\n literal(value: undefined, loc: SourceSpan): ASTv2.LiteralExpression & { value: undefined };\n literal(\n value: string | number | boolean | null | undefined,\n loc: SourceSpan\n ): ASTv2.LiteralExpression;\n literal(\n value: string | number | boolean | null | undefined,\n loc: SourceSpan\n ): ASTv2.LiteralExpression {\n return new ASTv2.LiteralExpression({\n loc,\n value,\n });\n }\n\n // STATEMENTS //\n\n append(\n {\n table,\n trusting,\n value,\n }: { table: SymbolTable; trusting: boolean; value: ASTv2.ExpressionNode },\n loc: SourceSpan\n ): ASTv2.AppendContent {\n return new ASTv2.AppendContent({\n table,\n trusting,\n value,\n loc,\n });\n }\n\n modifier({ callee, args }: CallParts, loc: SourceSpan): ASTv2.ElementModifier {\n return new ASTv2.ElementModifier({\n loc,\n callee,\n args,\n });\n }\n\n namedBlocks(blocks: ASTv2.NamedBlock[], loc: SourceSpan): ASTv2.NamedBlocks {\n return new ASTv2.NamedBlocks({\n loc,\n blocks,\n });\n }\n\n blockStatement(\n {\n program,\n inverse = null,\n ...call\n }: {\n symbols: SymbolTable;\n program: ASTv2.Block;\n inverse?: ASTv2.Block | null;\n } & CallParts,\n loc: SourceSpan\n ): ASTv2.InvokeBlock {\n let blocksLoc = program.loc;\n let blocks: PresentArray<ASTv2.NamedBlock> = [\n this.namedBlock(SourceSlice.synthetic('default'), program, program.loc),\n ];\n if (inverse) {\n blocksLoc = blocksLoc.extend(inverse.loc);\n blocks.push(this.namedBlock(SourceSlice.synthetic('else'), inverse, inverse.loc));\n }\n\n return new ASTv2.InvokeBlock({\n loc,\n blocks: this.namedBlocks(blocks, blocksLoc),\n callee: call.callee,\n args: call.args,\n });\n }\n\n element(options: BuildBaseElement): BuildElement {\n return new BuildElement(options);\n }\n}\n\nexport interface BuildBaseElement {\n selfClosing: boolean;\n attrs: ASTv2.HtmlOrSplatAttr[];\n componentArgs: ASTv2.ComponentArg[];\n modifiers: ASTv2.ElementModifier[];\n comments: ASTv2.GlimmerComment[];\n}\n\nexport class BuildElement {\n readonly builder: Builder;\n constructor(readonly base: BuildBaseElement) {\n this.builder = new Builder();\n }\n\n simple(tag: SourceSlice, body: ASTv2.ContentNode[], loc: SourceSpan): ASTv2.SimpleElement {\n return new ASTv2.SimpleElement(\n assign(\n {\n tag,\n body,\n componentArgs: [],\n loc,\n },\n this.base\n )\n );\n }\n\n named(name: SourceSlice, block: ASTv2.Block, loc: SourceSpan): ASTv2.NamedBlock {\n return new ASTv2.NamedBlock(\n assign(\n {\n name,\n block,\n componentArgs: [],\n loc,\n },\n this.base\n )\n );\n }\n\n selfClosingComponent(callee: ASTv2.ExpressionNode, loc: SourceSpan): ASTv2.InvokeComponent {\n return new ASTv2.InvokeComponent(\n assign(\n {\n loc,\n callee,\n // point the empty named blocks at the `/` self-closing tag\n blocks: new ASTv2.NamedBlocks({\n blocks: [],\n loc: loc.sliceEndChars({ skipEnd: 1, chars: 1 }),\n }),\n },\n this.base\n )\n );\n }\n\n componentWithDefaultBlock(\n callee: ASTv2.ExpressionNode,\n children: ASTv2.ContentNode[],\n symbols: BlockSymbolTable,\n loc: SourceSpan\n ): ASTv2.InvokeComponent {\n let block = this.builder.block(symbols, children, loc);\n let namedBlock = this.builder.namedBlock(SourceSlice.synthetic('default'), block, loc); // BUILDER.simpleNamedBlock('default', children, symbols, loc);\n\n return new ASTv2.InvokeComponent(\n assign(\n {\n loc,\n callee,\n blocks: this.builder.namedBlocks([namedBlock], namedBlock.loc),\n },\n this.base\n )\n );\n }\n\n componentWithNamedBlocks(\n callee: ASTv2.ExpressionNode,\n blocks: PresentArray<ASTv2.NamedBlock>,\n loc: SourceSpan\n ): ASTv2.InvokeComponent {\n return new ASTv2.InvokeComponent(\n assign(\n {\n loc,\n callee,\n blocks: this.builder.namedBlocks(blocks, SpanList.range(blocks)),\n },\n this.base\n )\n );\n }\n}\n","import type * as ASTv1 from '../v1/api';\n\nimport * as ASTv2 from './api';\n\nexport interface AstCallParts {\n path: ASTv1.Expression;\n params: ASTv1.Expression[];\n hash: ASTv1.Hash;\n}\n\nexport interface VarPath extends ASTv1.PathExpression {\n head: ASTv1.VarHead;\n}\n\nexport function SexpSyntaxContext(node: ASTv1.SubExpression): ASTv2.FreeVarResolution | null {\n if (isSimpleCallee(node)) {\n return ASTv2.LooseModeResolution.namespaced(ASTv2.HELPER_NAMESPACE);\n } else {\n return null;\n }\n}\n\nexport function ModifierSyntaxContext(\n node: ASTv1.ElementModifierStatement\n): ASTv2.FreeVarResolution | null {\n if (isSimpleCallee(node)) {\n return ASTv2.LooseModeResolution.namespaced(ASTv2.MODIFIER_NAMESPACE);\n } else {\n return null;\n }\n}\n\nexport function BlockSyntaxContext(node: ASTv1.BlockStatement): ASTv2.FreeVarResolution | null {\n if (isSimpleCallee(node)) {\n return ASTv2.LooseModeResolution.namespaced(ASTv2.COMPONENT_NAMESPACE);\n } else {\n return null;\n }\n}\n\nexport function ComponentSyntaxContext(node: ASTv1.PathExpression): ASTv2.FreeVarResolution | null {\n if (isSimplePath(node)) {\n return ASTv2.LooseModeResolution.namespaced(ASTv2.COMPONENT_NAMESPACE, true);\n } else {\n return null;\n }\n}\n\n/**\n * This corresponds to attribute curlies (<Foo bar={{...}}>).\n * In strict mode, this also corresponds to arg curlies.\n */\nexport function AttrValueSyntaxContext(\n node: ASTv1.MustacheStatement\n): ASTv2.FreeVarResolution | null {\n if (isSimpleCallee(node)) {\n return ASTv2.LooseModeResolution.namespaced(ASTv2.HELPER_NAMESPACE);\n } else {\n return null;\n }\n}\n\n/**\n * This corresponds to append positions text curlies.\n */\nexport function AppendSyntaxContext(node: ASTv1.MustacheStatement): ASTv2.FreeVarResolution | null {\n let isSimple = isSimpleCallee(node);\n let trusting = node.trusting;\n\n if (isSimple) {\n return trusting\n ? ASTv2.LooseModeResolution.trustingAppend()\n : ASTv2.LooseModeResolution.append();\n } else {\n return null;\n }\n}\n\nexport type Resolution<P extends AstCallParts | ASTv1.PathExpression> = (\n call: P\n) => ASTv2.FreeVarResolution | null;\n\n// UTILITIES\n\n/**\n * A call node has a simple callee if its head is:\n *\n * - a `PathExpression`\n * - the `PathExpression`'s head is a `VarHead`\n * - it has no tail\n *\n * Simple heads:\n *\n * ```\n * {{x}}\n * {{x y}}\n * ```\n *\n * Not simple heads:\n *\n * ```\n * {{x.y}}\n * {{x.y z}}\n * {{@x}}\n * {{@x a}}\n * {{this}}\n * {{this a}}\n * ```\n */\nfunction isSimpleCallee(node: AstCallParts): boolean {\n return isSimplePath(node.path);\n}\n\ntype SimplePath = ASTv1.PathExpression & { head: ASTv1.VarHead };\n\nfunction isSimplePath(node: ASTv1.Expression): node is SimplePath {\n if (node.type === 'PathExpression' && node.head.type === 'VarHead') {\n return node.tail.length === 0;\n } else {\n return false;\n }\n}\n","import type { PresentArray } from '@glimmer/interfaces';\nimport { asPresentArray, isPresentArray, localAssert } from '@glimmer/debug-util';\nimport { assign } from '@glimmer/util';\n\nimport type {\n PrecompileOptions,\n PrecompileOptionsWithLexicalScope,\n} from '../parser/tokenizer-event-handlers';\nimport type { SourceLocation } from '../source/location';\nimport type { Source } from '../source/source';\nimport type { SourceSpan } from '../source/span';\nimport type { BlockSymbolTable, ProgramSymbolTable } from '../symbol-table';\nimport type * as ASTv1 from '../v1/api';\nimport type { BuildElement, CallParts } from './builders';\nimport type { Resolution } from './loose-resolution';\n\nimport Printer from '../generation/printer';\nimport { preprocess } from '../parser/tokenizer-event-handlers';\nimport { SourceSlice } from '../source/slice';\nimport { SpanList } from '../source/span-list';\nimport { SymbolTable } from '../symbol-table';\nimport { generateSyntaxError } from '../syntax-error';\nimport { isLowerCase, isUpperCase } from '../utils';\nimport b from '../v1/parser-builders';\nimport * as ASTv2 from './api';\nimport { Builder } from './builders';\nimport {\n AppendSyntaxContext,\n AttrValueSyntaxContext,\n BlockSyntaxContext,\n ComponentSyntaxContext,\n ModifierSyntaxContext,\n SexpSyntaxContext,\n} from './loose-resolution';\n\nexport function normalize(\n source: Source,\n options: PrecompileOptionsWithLexicalScope = { lexicalScope: () => false }\n): [ast: ASTv2.Template, locals: string[]] {\n let ast = preprocess(source, options);\n\n let normalizeOptions = {\n strictMode: false,\n ...options,\n locals: ast.blockParams,\n keywords: options.keywords ?? [],\n };\n\n let top = SymbolTable.top(normalizeOptions.locals, normalizeOptions.keywords, {\n customizeComponentName: options.customizeComponentName ?? ((name) => name),\n lexicalScope: options.lexicalScope,\n });\n let block = new BlockContext(source, normalizeOptions, top);\n let normalizer = new StatementNormalizer(block);\n\n let astV2 = new TemplateChildren(\n block.loc(ast.loc),\n ast.body.map((b) => normalizer.normalize(b)),\n block\n ).assertTemplate(top);\n\n let locals = top.getUsedTemplateLocals();\n\n return [astV2, locals];\n}\n\n/**\n * A `BlockContext` represents the block that a particular AST node is contained inside of.\n *\n * `BlockContext` is aware of template-wide options (such as strict mode), as well as the bindings\n * that are in-scope within that block.\n *\n * Concretely, it has the `PrecompileOptions` and current `SymbolTable`, and provides\n * facilities for working with those options.\n *\n * `BlockContext` is stateless.\n */\nexport class BlockContext<Table extends SymbolTable = SymbolTable> {\n readonly builder: Builder;\n\n constructor(\n readonly source: Source,\n private readonly options: PrecompileOptions,\n readonly table: Table\n ) {\n this.builder = new Builder();\n }\n\n get strict(): boolean {\n return this.options.strictMode || false;\n }\n\n loc(loc: SourceLocation): SourceSpan {\n return this.source.spanFor(loc);\n }\n\n resolutionFor<N extends ASTv1.CallNode | ASTv1.PathExpression>(\n node: N,\n resolution: Resolution<N>\n ): { result: ASTv2.FreeVarResolution } | { result: 'error'; path: string; head: string } {\n if (this.strict) {\n return { result: ASTv2.STRICT_RESOLUTION };\n }\n\n if (this.isFreeVar(node)) {\n let r = resolution(node);\n\n if (r === null) {\n return {\n result: 'error',\n path: printPath(node),\n head: printHead(node),\n };\n }\n\n return { result: r };\n } else {\n return { result: ASTv2.STRICT_RESOLUTION };\n }\n }\n\n isLexicalVar(variable: string): boolean {\n return this.table.hasLexical(variable);\n }\n\n isKeyword(name: string): boolean {\n return this.strict && !this.table.hasLexical(name) && this.table.hasKeyword(name);\n }\n\n private isFreeVar(callee: ASTv1.CallNode | ASTv1.PathExpression): boolean {\n if (callee.type === 'PathExpression') {\n if (callee.head.type !== 'VarHead') {\n return false;\n }\n\n return !this.table.has(callee.head.name);\n } else if (callee.path.type === 'PathExpression') {\n return this.isFreeVar(callee.path);\n } else {\n return false;\n }\n }\n\n hasBinding(name: string): boolean {\n return this.table.has(name) || this.table.hasLexical(name);\n }\n\n child(blockParams: string[]): BlockContext<BlockSymbolTable> {\n return new BlockContext(this.source, this.options, this.table.child(blockParams));\n }\n\n customizeComponentName(input: string): string {\n if (this.options.customizeComponentName) {\n return this.options.customizeComponentName(input);\n } else {\n return input;\n }\n }\n}\n\n/**\n * An `ExpressionNormalizer` normalizes expressions within a block.\n *\n * `ExpressionNormalizer` is stateless.\n */\nclass ExpressionNormalizer {\n constructor(private block: BlockContext) {}\n\n /**\n * The `normalize` method takes an arbitrary expression and its original syntax context and\n * normalizes it to an ASTv2 expression.\n *\n * @see {SyntaxContext}\n */\n normalize(expr: ASTv1.Literal): ASTv2.LiteralExpression;\n normalize(expr: ASTv1.SubExpression): ASTv2.CallExpression;\n normalize(\n expr: ASTv1.MinimalPathExpression,\n resolution: ASTv2.FreeVarResolution\n ): ASTv2.PathExpression;\n normalize(expr: ASTv1.Expression, resolution: ASTv2.FreeVarResolution): ASTv2.ExpressionNode;\n normalize(\n expr: ASTv1.Expression | ASTv1.MinimalPathExpression,\n resolution?: ASTv2.FreeVarResolution\n ): ASTv2.ExpressionNode {\n switch (expr.type) {\n case 'NullLiteral':\n case 'BooleanLiteral':\n case 'NumberLiteral':\n case 'StringLiteral':\n case 'UndefinedLiteral':\n return this.block.builder.literal(expr.value, this.block.loc(expr.loc));\n case 'PathExpression':\n localAssert(resolution, '[BUG] resolution is required');\n return this.path(expr, resolution);\n case 'SubExpression': {\n // expr.path used to incorrectly have the type ASTv1.Expression\n if (isLiteral(expr.path)) {\n assertIllegalLiteral(expr.path, expr.loc);\n }\n\n let resolution = this.block.resolutionFor(expr, SexpSyntaxContext);\n\n if (resolution.result === 'error') {\n throw generateSyntaxError(\n `You attempted to invoke a path (\\`${resolution.path}\\`) but ${resolution.head} was not in scope`,\n expr.loc\n );\n }\n\n return this.block.builder.sexp(\n this.callParts(expr, resolution.result),\n this.block.loc(expr.loc)\n );\n }\n }\n }\n\n private path(\n expr: ASTv1.MinimalPathExpression,\n resolution: ASTv2.FreeVarResolution\n ): ASTv2.KeywordExpression | ASTv2.PathExpression {\n let loc = this.block.loc(expr.loc);\n\n if (\n expr.head.type === 'VarHead' &&\n expr.tail.length === 0 &&\n this.block.isKeyword(expr.head.name)\n ) {\n return this.block.builder.keyword(\n expr.head.name,\n this.block.table.getKeyword(expr.head.name),\n loc\n );\n }\n\n let headOffsets = this.block.loc(expr.head.loc);\n\n let tail = [];\n\n // start with the head\n let offset = headOffsets;\n\n for (let part of expr.tail) {\n offset = offset.sliceStartChars({ chars: part.length, skipStart: 1 });\n tail.push(\n new SourceSlice({\n loc: offset,\n chars: part,\n })\n );\n }\n\n return this.block.builder.path(this.ref(expr.head, resolution), tail, loc);\n }\n\n /**\n * The `callParts` method takes ASTv1.CallParts as well as a syntax context and normalizes\n * it to an ASTv2 CallParts.\n */\n callParts(parts: ASTv1.CallParts, context: ASTv2.FreeVarResolution): CallParts {\n let { path, params, hash, loc } = parts;\n\n let callee = this.normalize(path, context);\n let paramList = params.map((p) => this.normalize(p, ASTv2.STRICT_RESOLUTION));\n let paramLoc = SpanList.range(paramList, callee.loc.collapse('end'));\n let namedLoc = this.block.loc(hash.loc);\n let argsLoc = SpanList.range([paramLoc, namedLoc]);\n\n let positional = this.block.builder.positional(\n params.map((p) => this.normalize(p, ASTv2.STRICT_RESOLUTION)),\n paramLoc\n );\n\n let named = this.block.builder.named(\n hash.pairs.map((p) => this.namedArgument(p)),\n this.block.loc(hash.loc)\n );\n\n switch (callee.type) {\n case 'Literal':\n throw generateSyntaxError(\n `Invalid invocation of a literal value (\\`${callee.value}\\`)`,\n loc\n );\n\n // This really shouldn't be possible, something has gone pretty wrong\n case 'Interpolate':\n throw generateSyntaxError(`Invalid invocation of a interpolated string`, loc);\n }\n\n return {\n callee,\n args: this.block.builder.args(positional, named, argsLoc),\n };\n }\n\n private namedArgument(pair: ASTv1.HashPair): ASTv2.NamedArgument {\n let offsets = this.block.loc(pair.loc);\n\n let keyOffsets = offsets.sliceStartChars({ chars: pair.key.length });\n\n return this.block.builder.namedArgument(\n new SourceSlice({ chars: pair.key, loc: keyOffsets }),\n this.normalize(pair.value, ASTv2.STRICT_RESOLUTION)\n );\n }\n\n /**\n * The `ref` method normalizes an `ASTv1.PathHead` into an `ASTv2.VariableReference`.\n * This method is extremely important, because it is responsible for normalizing free\n * variables into an an ASTv2.PathHead *with appropriate context*.\n *\n * The syntax context is originally determined by the syntactic position that this `PathHead`\n * came from, and is ultimately attached to the `ASTv2.VariableReference` here. In ASTv2,\n * the `VariableReference` node bears full responsibility for loose mode rules that control\n * the behavior of free variables.\n */\n private ref(head: ASTv1.PathHead, resolution: ASTv2.FreeVarResolution): ASTv2.VariableReference {\n let { block } = this;\n let { builder, table } = block;\n let offsets = block.loc(head.loc);\n\n switch (head.type) {\n case 'ThisHead':\n if (block.hasBinding('this')) {\n let [symbol, isRoot] = table.get('this');\n return block.builder.localVar('this', symbol, isRoot, offsets);\n }\n return builder.self(offsets);\n case 'AtHead': {\n let symbol = table.allocateNamed(head.name);\n return builder.at(head.name, symbol, offsets);\n }\n case 'VarHead': {\n if (block.hasBinding(head.name)) {\n let [symbol, isRoot] = table.get(head.name);\n\n return block.builder.localVar(head.name, symbol, isRoot, offsets);\n } else {\n let context = block.strict ? ASTv2.STRICT_RESOLUTION : resolution;\n let symbol = block.table.allocateFree(head.name, context);\n\n return block.builder.freeVar({\n name: head.name,\n context,\n symbol,\n loc: offsets,\n });\n }\n }\n }\n }\n}\n\n/**\n * `TemplateNormalizer` normalizes top-level ASTv1 statements to ASTv2.\n */\nclass StatementNormalizer {\n constructor(private readonly block: BlockContext) {}\n\n normalize(node: ASTv1.Statement): ASTv2.ContentNode | ASTv2.NamedBlock {\n switch (node.type) {\n case 'BlockStatement':\n return this.BlockStatement(node);\n case 'ElementNode':\n return new ElementNormalizer(this.block).ElementNode(node);\n case 'MustacheStatement':\n return this.MustacheStatement(node);\n\n // These are the same in ASTv2\n case 'MustacheCommentStatement':\n return this.MustacheCommentStatement(node);\n\n case 'CommentStatement': {\n let loc = this.block.loc(node.loc);\n return new ASTv2.HtmlComment({\n loc,\n text: loc.slice({ skipStart: 4, skipEnd: 3 }).toSlice(node.value),\n });\n }\n\n case 'TextNode':\n return new ASTv2.HtmlText({\n loc: this.block.loc(node.loc),\n chars: node.chars,\n });\n }\n }\n\n MustacheCommentStatement(node: ASTv1.MustacheCommentStatement): ASTv2.GlimmerComment {\n let loc = this.block.loc(node.loc);\n\n // If someone cares for these cases to have the right loc, feel free to attempt:\n // {{!}} {{~!}} {{!~}} {{~!~}}\n // {{!-}} {{~!-}} {{!-~}} {{~!-~}}\n // {{!--}} {{~!--}} {{!--~}} {{~!--~}}\n // {{!---}} {{~!---}} {{!---~}} {{~!---~}}\n // {{!----}} {{~!----}} {{!----~}} {{~!----~}}\n if (node.value === '') {\n return new ASTv2.GlimmerComment({\n loc,\n text: SourceSlice.synthetic(''),\n });\n }\n\n let source = loc.asString();\n let span = loc;\n\n if (node.value.startsWith('-')) {\n localAssert(\n /^\\{\\{~?!---/u.test(source),\n `to start a comment's content with a '-', it must have started with {{!--`\n );\n span = span.sliceStartChars({\n skipStart: source.startsWith('{{~') ? 6 : 5,\n chars: node.value.length,\n });\n } else if (node.value.endsWith('-')) {\n localAssert(\n /--~?\\}\\}/u.test(source),\n `to end a comment's content with a '-', it must have ended with --}}`\n );\n\n const skipEnd = source.endsWith('~}}') ? 5 : 4;\n const skipStart = source.length - node.value.length - skipEnd;\n\n span = span.slice({\n skipStart,\n skipEnd,\n });\n } else {\n span = span.sliceStartChars({\n skipStart: source.lastIndexOf(node.value),\n chars: node.value.length,\n });\n }\n\n return new ASTv2.GlimmerComment({\n loc,\n text: span.toSlice(node.value),\n });\n }\n\n /**\n * Normalizes an ASTv1.MustacheStatement to an ASTv2.AppendStatement\n */\n MustacheStatement(mustache: ASTv1.MustacheStatement): ASTv2.AppendContent {\n let { path, params, hash, trusting } = mustache;\n let loc = this.block.loc(mustache.loc);\n let value: ASTv2.ExpressionNode;\n\n if (isLiteral(path)) {\n if (params.length === 0 && hash.pairs.length === 0) {\n value = this.expr.normalize(path);\n } else {\n assertIllegalLiteral(path, loc);\n }\n } else {\n let resolution = this.block.resolutionFor(mustache, AppendSyntaxContext);\n\n if (resolution.result === 'error') {\n throw generateSyntaxError(\n `You attempted to render a path (\\`{{${resolution.path}}}\\`), but ${resolution.head} was not in scope`,\n loc\n );\n }\n\n // Normalize the call parts in AppendSyntaxContext\n let callParts = this.expr.callParts(\n {\n path,\n params,\n hash,\n loc,\n },\n resolution.result\n );\n\n value = callParts.args.isEmpty() ? callParts.callee : this.block.builder.sexp(callParts, loc);\n }\n\n return this.block.builder.append(\n {\n table: this.block.table,\n trusting,\n value,\n },\n loc\n );\n }\n\n /**\n * Normalizes a ASTv1.BlockStatement to an ASTv2.BlockStatement\n */\n BlockStatement(block: ASTv1.BlockStatement): ASTv2.InvokeBlock {\n let { program, inverse } = block;\n let loc = this.block.loc(block.loc);\n\n // block.path used to incorrectly have the type ASTv1.Expression\n if (isLiteral(block.path)) {\n assertIllegalLiteral(block.path, loc);\n }\n\n let resolution = this.block.resolutionFor(block, BlockSyntaxContext);\n\n if (resolution.result === 'error') {\n throw generateSyntaxError(\n `You attempted to invoke a path (\\`{{#${resolution.path}}}\\`) but ${resolution.head} was not in scope`,\n loc\n );\n }\n\n let callParts = this.expr.callParts(block, resolution.result);\n\n return this.block.builder.blockStatement(\n assign(\n {\n symbols: this.block.table,\n program: this.Block(program),\n inverse: inverse ? this.Block(inverse) : null,\n },\n callParts\n ),\n loc\n );\n }\n\n Block({ body, loc, blockParams }: ASTv1.Block): ASTv2.Block {\n let child = this.block.child(blockParams);\n let normalizer = new StatementNormalizer(child);\n return new BlockChildren(\n this.block.loc(loc),\n body.map((b) => normalizer.normalize(b)),\n this.block\n ).assertBlock(child.table);\n }\n\n private get expr(): ExpressionNormalizer {\n return new ExpressionNormalizer(this.block);\n }\n}\n\nclass ElementNormalizer {\n constructor(private readonly ctx: BlockContext) {}\n\n /**\n * Normalizes an ASTv1.ElementNode to:\n *\n * - ASTv2.NamedBlock if the tag name begins with `:`\n * - ASTv2.Component if the tag name matches the component heuristics\n * - ASTv2.SimpleElement if the tag name doesn't match the component heuristics\n *\n * A tag name represents a component if:\n *\n * - it begins with `@`\n * - it is exactly `this` or begins with `this.`\n * - the part before the first `.` is a reference to an in-scope variable binding\n * - it begins with an uppercase character\n */\n ElementNode(element: ASTv1.ElementNode): ASTv2.ElementNode {\n let { tag, selfClosing, comments } = element;\n let loc = this.ctx.loc(element.loc);\n\n let [tagHead, ...rest] = asPresentArray(tag.split('.'));\n\n // the head, attributes and modifiers are in the current scope\n let path = this.classifyTag(tagHead, rest, element.loc);\n\n let attrs = element.attributes.filter((a) => a.name[0] !== '@').map((a) => this.attr(a));\n let args = element.attributes.filter((a) => a.name[0] === '@').map((a) => this.arg(a));\n\n let modifiers = element.modifiers.map((m) => this.modifier(m));\n\n // the element's block params are in scope for the children\n let child = this.ctx.child(element.blockParams);\n let normalizer = new StatementNormalizer(child);\n\n let childNodes = element.children.map((s) => normalizer.normalize(s));\n\n let el = this.ctx.builder.element({\n selfClosing,\n attrs,\n componentArgs: args,\n modifiers,\n comments: comments.map((c) => new StatementNormalizer(this.ctx).MustacheCommentStatement(c)),\n });\n\n let children = new ElementChildren(el, loc, childNodes, this.ctx);\n\n let offsets = this.ctx.loc(element.loc);\n let tagOffsets = offsets.sliceStartChars({ chars: tag.length, skipStart: 1 });\n\n if (path === 'ElementHead') {\n if (tag[0] === ':') {\n return children.assertNamedBlock(\n tagOffsets.slice({ skipStart: 1 }).toSlice(tag.slice(1)),\n child.table\n );\n } else {\n return children.assertElement(tagOffsets.toSlice(tag), element.blockParams.length > 0);\n }\n }\n\n if (element.selfClosing) {\n return el.selfClosingComponent(path, loc);\n } else {\n let blocks = children.assertComponent(tag, child.table, element.blockParams.length > 0);\n return el.componentWithNamedBlocks(path, blocks, loc);\n }\n }\n\n private modifier(m: ASTv1.ElementModifierStatement): ASTv2.ElementModifier {\n // modifier.path used to incorrectly have the type ASTv1.Expression\n if (isLiteral(m.path)) {\n assertIllegalLiteral(m.path, m.loc);\n }\n\n let resolution = this.ctx.resolutionFor(m, ModifierSyntaxContext);\n\n if (resolution.result === 'error') {\n throw generateSyntaxError(\n `You attempted to invoke a path (\\`{{${resolution.path}}}\\`) as a modifier, but ${resolution.head} was not in scope`,\n m.loc\n );\n }\n\n let callParts = this.expr.callParts(m, resolution.result);\n return this.ctx.builder.modifier(callParts, this.ctx.loc(m.loc));\n }\n\n /**\n * This method handles attribute values that are curlies, as well as curlies nested inside of\n * interpolations:\n *\n * ```hbs\n * <a href={{url}} />\n * <a href=\"{{url}}.html\" />\n * ```\n */\n private mustacheAttr(mustache: ASTv1.MustacheStatement): ASTv2.ExpressionNode {\n let { path, params, hash, loc } = mustache;\n\n if (isLiteral(path)) {\n if (params.length === 0 && hash.pairs.length === 0) {\n return this.expr.normalize(path);\n } else {\n assertIllegalLiteral(path, loc);\n }\n }\n\n // Normalize the call parts in AttrValueSyntaxContext\n let resolution = this.ctx.resolutionFor(mustache, AttrValueSyntaxContext);\n\n if (resolution.result === 'error') {\n throw generateSyntaxError(\n `You attempted to render a path (\\`{{${resolution.path}}}\\`), but ${resolution.head} was not in scope`,\n mustache.loc\n );\n }\n\n let sexp = this.ctx.builder.sexp(\n this.expr.callParts(mustache as ASTv1.CallParts, resolution.result),\n this.ctx.loc(mustache.loc)\n );\n\n // If there are no params or hash, just return the function part as its own expression\n if (sexp.args.isEmpty()) {\n return sexp.callee;\n } else {\n return sexp;\n }\n }\n\n /**\n * attrPart is the narrowed down list of valid attribute values that are also\n * allowed as a concat part (you can't nest concats).\n */\n private attrPart(part: ASTv1.MustacheStatement | ASTv1.TextNode): {\n expr: ASTv2.ExpressionNode;\n trusting: boolean;\n } {\n switch (part.type) {\n case 'MustacheStatement':\n return { expr: this.mustacheAttr(part), trusting: part.trusting };\n case 'TextNode':\n return {\n expr: this.ctx.builder.literal(part.chars, this.ctx.loc(part.loc)),\n trusting: true,\n };\n }\n }\n\n private attrValue(part: ASTv1.MustacheStatement | ASTv1.TextNode | ASTv1.ConcatStatement): {\n expr: ASTv2.ExpressionNode;\n trusting: boolean;\n } {\n switch (part.type) {\n case 'ConcatStatement': {\n let parts = part.parts.map((p) => this.attrPart(p).expr);\n return {\n expr: this.ctx.builder.interpolate(parts, this.ctx.loc(part.loc)),\n trusting: false,\n };\n }\n default:\n return this.attrPart(part);\n }\n }\n\n private attr(m: ASTv1.AttrNode): ASTv2.HtmlOrSplatAttr {\n localAssert(m.name[0] !== '@', 'An attr name must not start with `@`');\n\n if (m.name === '...attributes') {\n return this.ctx.builder.splatAttr(this.ctx.table.allocateBlock('attrs'), this.ctx.loc(m.loc));\n }\n\n let offsets = this.ctx.loc(m.loc);\n let nameSlice = offsets.sliceStartChars({ chars: m.name.length }).toSlice(m.name);\n let value = this.attrValue(m.value);\n\n return this.ctx.builder.attr(\n { name: nameSlice, value: value.expr, trusting: value.trusting },\n offsets\n );\n }\n\n // An arg curly <Foo @bar={{...}} /> is the same as an attribute curly for\n // our purposes, except that in loose mode <Foo @bar={{baz}} /> is an error:\n private checkArgCall(arg: ASTv1.AttrNode): void {\n let { value } = arg;\n\n if (value.type !== 'MustacheStatement') {\n return;\n }\n\n if (value.params.length !== 0 || value.hash.pairs.length !== 0) {\n return;\n }\n\n let { path } = value;\n\n if (path.type !== 'PathExpression') {\n return;\n }\n\n if (path.tail.length > 0) {\n return;\n }\n\n let resolution = this.ctx.resolutionFor(path, () => {\n // We deliberately don't want this to resolve anything. The purpose of\n // calling `resolutionFor` here is to check for strict mode, in-scope\n // local variables, etc.\n return null;\n });\n\n if (resolution.result === 'error' && resolution.path !== 'has-block') {\n throw generateSyntaxError(\n `You attempted to pass a path as argument (\\`${arg.name}={{${resolution.path}}}\\`) but ${resolution.head} was not in scope. Try:\\n` +\n `* \\`${arg.name}={{this.${resolution.path}}}\\` if this is meant to be a property lookup, or\\n` +\n `* \\`${arg.name}={{(${resolution.path})}}\\` if this is meant to invoke the resolved helper, or\\n` +\n `* \\`${arg.name}={{helper \"${resolution.path}\"}}\\` if this is meant to pass the resolved helper by value`,\n arg.loc\n );\n }\n }\n\n private arg(arg: ASTv1.AttrNode): ASTv2.ComponentArg {\n localAssert(arg.name[0] === '@', 'An arg name must start with `@`');\n this.checkArgCall(arg);\n\n let offsets = this.ctx.loc(arg.loc);\n let nameSlice = offsets.sliceStartChars({ chars: arg.name.length }).toSlice(arg.name);\n let value = this.attrValue(arg.value);\n\n return this.ctx.builder.arg(\n { name: nameSlice, value: value.expr, trusting: value.trusting },\n offsets\n );\n }\n\n /**\n * This function classifies the head of an ASTv1.Element into an ASTv2.PathHead (if the\n * element is a component) or `'ElementHead'` (if the element is a simple element).\n *\n * Rules:\n *\n * 1. If the variable is an `@arg`, return an `AtHead`\n * 2. If the variable is `this`, return a `ThisHead`\n * 3. If the variable is in the current scope:\n * a. If the scope is the root scope, then return a Free `LocalVarHead`\n * b. Else, return a standard `LocalVarHead`\n * 4. If the tag name is a path and the variable is not in the current scope, Syntax Error\n * 5. If the variable is uppercase return a FreeVar(ResolveAsComponentHead)\n * 6. Otherwise, return `'ElementHead'`\n */\n private classifyTag(\n variable: string,\n tail: string[],\n loc: SourceSpan\n ): ASTv2.ExpressionNode | 'ElementHead' {\n let uppercase = isUpperCase(variable);\n let inScope = variable[0] === '@' || variable === 'this' || this.ctx.hasBinding(variable);\n\n if (this.ctx.strict && !inScope) {\n if (uppercase) {\n throw generateSyntaxError(\n `Attempted to invoke a component that was not in scope in a strict mode template, \\`<${variable}>\\`. If you wanted to create an element with that name, convert it to lowercase - \\`<${variable.toLowerCase()}>\\``,\n loc\n );\n }\n\n // In strict mode, values are always elements unless they are in scope\n return 'ElementHead';\n }\n\n // Since the parser handed us the HTML element name as a string, we need\n // to convert it into an ASTv1 path so it can be processed using the\n // expression normalizer.\n let isComponent = inScope || uppercase;\n\n let variableLoc = loc.sliceStartChars({ skipStart: 1, chars: variable.length });\n\n let tailLength = tail.reduce((accum, part) => accum + 1 + part.length, 0);\n let pathEnd = variableLoc.getEnd().move(tailLength);\n let pathLoc = variableLoc.withEnd(pathEnd);\n\n if (isComponent) {\n let path = b.path({\n head: b.head({ original: variable, loc: variableLoc }),\n tail,\n loc: pathLoc,\n });\n\n let resolution = this.ctx.isLexicalVar(variable)\n ? { result: ASTv2.STRICT_RESOLUTION }\n : this.ctx.resolutionFor(path, ComponentSyntaxContext);\n\n if (resolution.result === 'error') {\n throw generateSyntaxError(\n `You attempted to invoke a path (\\`<${resolution.path}>\\`) but ${resolution.head} was not in scope`,\n loc\n );\n }\n\n return new ExpressionNormalizer(this.ctx).normalize(path, resolution.result);\n } else {\n this.ctx.table.allocateFree(variable, ASTv2.STRICT_RESOLUTION);\n }\n\n // If the tag name wasn't a valid component but contained a `.`, it's\n // a syntax error.\n if (tail.length > 0) {\n throw generateSyntaxError(\n `You used ${variable}.${tail.join('.')} as a tag name, but ${variable} is not in scope`,\n loc\n );\n }\n\n return 'ElementHead';\n }\n\n private get expr(): ExpressionNormalizer {\n return new ExpressionNormalizer(this.ctx);\n }\n}\n\nclass Children {\n readonly namedBlocks: ASTv2.NamedBlock[];\n readonly hasSemanticContent: boolean;\n readonly nonBlockChildren: ASTv2.ContentNode[];\n\n constructor(\n readonly loc: SourceSpan,\n readonly children: (ASTv2.ContentNode | ASTv2.NamedBlock)[],\n readonly block: BlockContext\n ) {\n this.namedBlocks = children.filter((c): c is ASTv2.NamedBlock => c instanceof ASTv2.NamedBlock);\n this.hasSemanticContent = Boolean(\n children.filter((c): c is ASTv2.ContentNode => {\n if (c instanceof ASTv2.NamedBlock) {\n return false;\n }\n switch (c.type) {\n case 'GlimmerComment':\n case 'HtmlComment':\n return false;\n case 'HtmlText':\n return !/^\\s*$/u.test(c.chars);\n default:\n return true;\n }\n }).length\n );\n this.nonBlockChildren = children.filter(\n (c): c is ASTv2.ContentNode => !(c instanceof ASTv2.NamedBlock)\n );\n }\n}\n\nclass TemplateChildren extends Children {\n assertTemplate(table: ProgramSymbolTable): ASTv2.Template {\n if (isPresentArray(this.namedBlocks)) {\n throw generateSyntaxError(`Unexpected named block at the top-level of a template`, this.loc);\n }\n\n return this.block.builder.template(table, this.nonBlockChildren, this.block.loc(this.loc));\n }\n}\n\nclass BlockChildren extends Children {\n assertBlock(table: BlockSymbolTable): ASTv2.Block {\n if (isPresentArray(this.namedBlocks)) {\n throw generateSyntaxError(`Unexpected named block nested in a normal block`, this.loc);\n }\n\n return this.block.builder.block(table, this.nonBlockChildren, this.loc);\n }\n}\n\nclass ElementChildren extends Children {\n constructor(\n private el: BuildElement,\n loc: SourceSpan,\n children: (ASTv2.ContentNode | ASTv2.NamedBlock)[],\n block: BlockContext\n ) {\n super(loc, children, block);\n }\n\n assertNamedBlock(name: SourceSlice, table: BlockSymbolTable): ASTv2.NamedBlock {\n if (this.el.base.selfClosing) {\n throw generateSyntaxError(\n `<:${name.chars}/> is not a valid named block: named blocks cannot be self-closing`,\n this.loc\n );\n }\n\n if (isPresentArray(this.namedBlocks)) {\n throw generateSyntaxError(\n `Unexpected named block inside <:${name.chars}> named block: named blocks cannot contain nested named blocks`,\n this.loc\n );\n }\n\n if (!isLowerCase(name.chars)) {\n throw generateSyntaxError(\n `<:${name.chars}> is not a valid named block, and named blocks must begin with a lowercase letter`,\n this.loc\n );\n }\n\n if (\n this.el.base.attrs.length > 0 ||\n this.el.base.componentArgs.length > 0 ||\n this.el.base.modifiers.length > 0\n ) {\n throw generateSyntaxError(\n `named block <:${name.chars}> cannot have attributes, arguments, or modifiers`,\n this.loc\n );\n }\n\n let offsets = SpanList.range(this.nonBlockChildren, this.loc);\n\n return this.block.builder.namedBlock(\n name,\n this.block.builder.block(table, this.nonBlockChildren, offsets),\n this.loc\n );\n }\n\n assertElement(name: SourceSlice, hasBlockParams: boolean): ASTv2.SimpleElement {\n if (hasBlockParams) {\n throw generateSyntaxError(\n `Unexpected block params in <${name.chars}>: simple elements cannot have block params`,\n this.loc\n );\n }\n\n if (isPresentArray(this.namedBlocks)) {\n let names = this.namedBlocks.map((b) => b.name);\n\n if (names.length === 1) {\n throw generateSyntaxError(\n `Unexpected named block <:foo> inside <${name.chars}> HTML element`,\n this.loc\n );\n } else {\n let printedNames = names.map((n) => `<:${n.chars}>`).join(', ');\n throw generateSyntaxError(\n `Unexpected named blocks inside <${name.chars}> HTML element (${printedNames})`,\n this.loc\n );\n }\n }\n\n return this.el.simple(name, this.nonBlockChildren, this.loc);\n }\n\n assertComponent(\n name: string,\n table: BlockSymbolTable,\n hasBlockParams: boolean\n ): PresentArray<ASTv2.NamedBlock> {\n if (isPresentArray(this.namedBlocks) && this.hasSemanticContent) {\n throw generateSyntaxError(\n `Unexpected content inside <${name}> component invocation: when using named blocks, the tag cannot contain other content`,\n this.loc\n );\n }\n\n if (isPresentArray(this.namedBlocks)) {\n if (hasBlockParams) {\n throw generateSyntaxError(\n `Unexpected block params list on <${name}> component invocation: when passing named blocks, the invocation tag cannot take block params`,\n this.loc\n );\n }\n\n let seenNames = new Set<string>();\n\n for (let block of this.namedBlocks) {\n let name = block.name.chars;\n\n if (seenNames.has(name)) {\n throw generateSyntaxError(\n `Component had two named blocks with the same name, \\`<:${name}>\\`. Only one block with a given name may be passed`,\n this.loc\n );\n }\n\n if (\n (name === 'inverse' && seenNames.has('else')) ||\n (name === 'else' && seenNames.has('inverse'))\n ) {\n throw generateSyntaxError(\n `Component has both <:else> and <:inverse> block. <:inverse> is an alias for <:else>`,\n this.loc\n );\n }\n\n seenNames.add(name);\n }\n\n return this.namedBlocks;\n } else {\n return [\n this.block.builder.namedBlock(\n SourceSlice.synthetic('default'),\n this.block.builder.block(table, this.nonBlockChildren, this.loc),\n this.loc\n ),\n ];\n }\n }\n}\n\nfunction isLiteral(node: ASTv1.Expression): node is ASTv1.Literal {\n switch (node.type) {\n case 'StringLiteral':\n case 'BooleanLiteral':\n case 'NumberLiteral':\n case 'UndefinedLiteral':\n case 'NullLiteral':\n return true;\n default:\n return false;\n }\n}\n\nfunction assertIllegalLiteral(node: ASTv1.Literal, loc: SourceSpan): never {\n let value = node.type === 'StringLiteral' ? JSON.stringify(node.value) : String(node.value);\n throw generateSyntaxError(`Unexpected literal \\`${value}\\``, loc);\n}\n\nfunction printPath(node: ASTv1.PathExpression | ASTv1.CallNode): string {\n if (node.type !== 'PathExpression' && node.path.type === 'PathExpression') {\n return printPath(node.path);\n } else {\n return new Printer({ entityEncoding: 'raw' }).print(node);\n }\n}\n\nfunction printHead(node: ASTv1.PathExpression | ASTv1.CallNode): string {\n if (node.type === 'PathExpression') {\n return node.head.original;\n } else if (node.path.type === 'PathExpression') {\n return printHead(node.path);\n } else {\n return new Printer({ entityEncoding: 'raw' }).print(node);\n }\n}\n","export { default as print } from './lib/generation/print';\nexport { getVoidTags, isVoidTag } from './lib/generation/printer';\nexport { sortByLoc } from './lib/generation/util';\nexport { getTemplateLocals } from './lib/get-template-locals';\nexport { isKeyword, KEYWORDS_TYPES, type KeywordType } from './lib/keywords';\nexport type { PreprocessOptions } from './lib/parser/tokenizer-event-handlers';\nexport {\n type ASTPlugin,\n type ASTPluginBuilder,\n type ASTPluginEnvironment,\n type PrecompileOptions,\n type PrecompileOptionsWithLexicalScope,\n preprocess,\n type Syntax,\n type TemplateIdFn,\n} from './lib/parser/tokenizer-event-handlers';\nexport * as src from './lib/source/api';\nexport { SourceSlice } from './lib/source/slice';\nexport {\n type HasSourceSpan,\n hasSpan,\n loc,\n type MaybeHasSourceSpan,\n maybeLoc,\n SpanList,\n} from './lib/source/span-list';\nexport { BlockSymbolTable, ProgramSymbolTable, SymbolTable } from './lib/symbol-table';\nexport { generateSyntaxError, type GlimmerSyntaxError } from './lib/syntax-error';\nexport { cannotRemoveNode, cannotReplaceNode } from './lib/traversal/errors';\nexport { default as WalkerPath } from './lib/traversal/path';\nexport { default as traverse } from './lib/traversal/traverse';\nexport type { NodeVisitor } from './lib/traversal/visitor';\nexport { default as Walker } from './lib/traversal/walker';\nexport type * as ASTv1 from './lib/v1/api';\nexport { default as builders } from './lib/v1/public-builders';\nexport { default as visitorKeys } from './lib/v1/visitor-keys';\nexport * as ASTv2 from './lib/v2/api';\nexport { normalize } from './lib/v2/normalize';\nexport { node } from './lib/v2/objects/node';\n\n/** @deprecated use WalkerPath instead */\nexport { default as Path } from './lib/traversal/walker';\n\n/** @deprecated use ASTv1 instead */\nexport type * as AST from './lib/v1/api';\n","export const ContentType = {\n Component: 0,\n Helper: 1,\n String: 2,\n Empty: 3,\n SafeString: 4,\n Fragment: 5,\n Node: 6,\n Other: 8,\n} as const;\n","import type {\n ARG_SHIFT as IARG_SHIFT,\n AttributeHookCapability,\n CreateArgsCapability,\n CreateCallerCapability,\n CreateInstanceCapability,\n DynamicLayoutCapability,\n DynamicScopeCapability,\n DynamicTagCapability,\n ElementHookCapability,\n EmptyCapability,\n HasSubOwnerCapability,\n MACHINE_MASK as IMACHINE_MASK,\n MAX_SIZE as IMAX_SIZE,\n OPERAND_LEN_MASK as IOPERAND_LEN_MASK,\n PrepareArgsCapability,\n TYPE_MASK as ITYPE_MASK,\n TYPE_SIZE as ITYPE_SIZE,\n UpdateHookCapability,\n WillDestroyCapability,\n WrappedCapability,\n} from '@glimmer/interfaces';\n\nexport const InternalComponentCapabilities = {\n Empty: 0 satisfies EmptyCapability,\n dynamicLayout: 0b0000000000001 satisfies DynamicLayoutCapability,\n dynamicTag: 0b0000000000010 satisfies DynamicTagCapability,\n prepareArgs: 0b0000000000100 satisfies PrepareArgsCapability,\n createArgs: 0b0000000001000 satisfies CreateArgsCapability,\n attributeHook: 0b0000000010000 satisfies AttributeHookCapability,\n elementHook: 0b0000000100000 satisfies ElementHookCapability,\n dynamicScope: 0b0000001000000 satisfies DynamicScopeCapability,\n createCaller: 0b0000010000000 satisfies CreateCallerCapability,\n updateHook: 0b0000100000000 satisfies UpdateHookCapability,\n createInstance: 0b0001000000000 satisfies CreateInstanceCapability,\n wrapped: 0b0010000000000 satisfies WrappedCapability,\n willDestroy: 0b0100000000000 satisfies WillDestroyCapability,\n hasSubOwner: 0b1000000000000 satisfies HasSubOwnerCapability,\n} as const;\n\nexport const ARG_SHIFT = 8 as const satisfies IARG_SHIFT;\nexport const MAX_SIZE = 0x7fffffff as const satisfies IMAX_SIZE;\nexport const TYPE_SIZE = 0b11111111 as const satisfies ITYPE_SIZE;\nexport const TYPE_MASK = 0b00000000000000000000000011111111 as const satisfies ITYPE_MASK;\nexport const OPERAND_LEN_MASK =\n 0b00000000000000000000001100000000 as const satisfies IOPERAND_LEN_MASK;\nexport const MACHINE_MASK = 0b00000000000000000000010000000000 as const satisfies IMACHINE_MASK;\n","/**\n * Registers\n *\n * For the most part, these follows MIPS naming conventions, however the\n * register numbers are different.\n */\n\n// $0 or $pc (program counter): pointer into `program` for the next insturction; -1 means exit\nexport type $pc = 0;\nexport const $pc: $pc = 0;\n// $1 or $ra (return address): pointer into `program` for the return\nexport type $ra = 1;\nexport const $ra: $ra = 1;\n// $2 or $fp (frame pointer): pointer into the `evalStack` for the base of the stack\nexport type $fp = 2;\nexport const $fp: $fp = 2;\n// $3 or $sp (stack pointer): pointer into the `evalStack` for the top of the stack\nexport type $sp = 3;\nexport const $sp: $sp = 3;\n// $4-$5 or $s0-$s1 (saved): callee saved general-purpose registers\nexport type $s0 = 4;\nexport const $s0: $s0 = 4;\nexport type $s1 = 5;\nexport const $s1: $s1 = 5;\n// $6-$7 or $t0-$t1 (temporaries): caller saved general-purpose registers\nexport type $t0 = 6;\nexport const $t0: $t0 = 6;\nexport type $t1 = 7;\nexport const $t1: $t1 = 7;\n// $8 or $v0 (return value)\nexport type $v0 = 8;\nexport const $v0 = 8;\n\nexport type MachineRegister = $pc | $ra | $fp | $sp;\n\nexport function isLowLevelRegister(\n register: Register | MachineRegister\n): register is Register & MachineRegister {\n return (register as number) <= $sp;\n}\n\nexport type SavedRegister = $s0 | $s1;\nexport type TemporaryRegister = $t0 | $t1;\n\nexport type Register = MachineRegister | SavedRegister | TemporaryRegister | $v0;\nexport type SyscallRegister = SavedRegister | TemporaryRegister | $v0;\n","import type { ProgramConstants } from '@glimmer/interfaces';\nimport {\n CURRIED_COMPONENT,\n CURRIED_HELPER,\n CURRIED_MODIFIER,\n decodeHandle,\n decodeImmediate,\n} from '@glimmer/constants';\nimport { $fp, $pc, $ra, $s0, $s1, $sp, $t0, $t1, $v0 } from '@glimmer/vm';\n\nimport type { Primitive, RegisterName } from './dism/dism';\n\nexport function decodeCurry(curry: number): 'component' | 'helper' | 'modifier' {\n switch (curry) {\n case CURRIED_COMPONENT:\n return 'component';\n case CURRIED_HELPER:\n return 'helper';\n case CURRIED_MODIFIER:\n return 'modifier';\n default:\n throw Error(`Unexpected curry value: ${curry}`);\n }\n}\n\nexport function decodeRegister(register: number): RegisterName {\n switch (register) {\n case $pc:\n return '$pc';\n case $ra:\n return '$ra';\n case $fp:\n return '$fp';\n case $sp:\n return '$sp';\n case $s0:\n return '$s0';\n case $s1:\n return '$s1';\n case $t0:\n return '$t0';\n case $t1:\n return '$t1';\n case $v0:\n return '$v0';\n default:\n return `$bug${register}`;\n }\n}\n\nexport function decodePrimitive(primitive: number, constants: ProgramConstants): Primitive {\n if (primitive >= 0) {\n return constants.getValue(decodeHandle(primitive));\n }\n return decodeImmediate(primitive);\n}\n","import type { BlockMetadata, ProgramConstants, ProgramHeap } from '@glimmer/interfaces';\nimport { decodeHandle } from '@glimmer/constants';\n\nimport type { RawDisassembledOperand } from '../debug';\nimport type {\n NonNullableOperandType,\n NormalizedOperand,\n NullableOperandType,\n OperandType,\n} from './operand-types';\n\nimport { decodeCurry, decodePrimitive, decodeRegister } from '../decoders';\n\ninterface DisassemblyState {\n readonly offset: number;\n readonly label: NormalizedOperand;\n readonly value: number;\n readonly constants: ProgramConstants;\n readonly heap: ProgramHeap;\n readonly meta: BlockMetadata | null;\n}\n\nexport type OperandDisassembler = (options: DisassemblyState) => RawDisassembledOperand;\n\nconst todo: OperandDisassembler = ({ label, value }) => ['error:operand', value, { label }];\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Left<D extends Disassembler<any>> =\n D extends Disassembler<infer Added> ? Exclude<OperandType, Added> : never;\n\ntype AllOperands = OperandType;\n\nclass Disassembler<in out Added extends OperandType> {\n static build(\n builder: (disassembler: Disassembler<never>) => Disassembler<AllOperands>\n ): Record<OperandType, OperandDisassembler> {\n return builder(new Disassembler()).#disms as Record<OperandType, OperandDisassembler>;\n }\n\n readonly #disms: Record<string, OperandDisassembler>;\n\n private constructor() {\n this.#disms = {};\n }\n\n addNullable<const K extends Left<this> & NullableOperandType>(\n names: K[],\n dism: OperandDisassembler\n ): Disassembler<Added | K | `${K}?`> {\n for (const name of names) {\n this.#disms[name] = dism;\n this.#disms[`${name}?`] = dism;\n }\n\n return this as Disassembler<Added | K | `${K}?`>;\n }\n\n add<const K extends Left<this> & NonNullableOperandType>(\n names: K[],\n dism: OperandDisassembler\n ): Disassembler<Added | K> {\n const add = (name: K, dism: OperandDisassembler) => (this.#disms[name] = dism);\n for (const name of names) {\n add(name, dism);\n }\n\n return this;\n }\n}\n\nexport const OPERANDS = Disassembler.build((d) => {\n return d\n .add(['imm/u32', 'imm/i32', 'imm/u32{todo}', 'imm/i32{todo}'], ({ value }) => ['number', value])\n .add(['const/i32[]'], ({ value, constants }) => [\n 'array',\n constants.getArray<number>(value),\n { kind: Number },\n ])\n .add(['const/bool'], ({ value }) => ['boolean', !!value])\n .add(['imm/bool'], ({ value, constants }) => [\n 'boolean',\n constants.getValue<boolean>(decodeHandle(value)),\n ])\n .add(['handle'], ({ constants, value }) => ['constant', constants.getValue<number>(value)])\n .add(['handle/block'], ({ value, heap }) => ['instruction', heap.getaddr(value)])\n .add(['imm/pc'], ({ value }) => ['instruction', value])\n .add(['const/any[]'], ({ value, constants }) => ['array', constants.getArray<unknown[]>(value)])\n .add(['const/primitive'], ({ value, constants }) => [\n 'primitive',\n decodePrimitive(value, constants),\n ])\n .add(['register'], ({ value }) => ['register', decodeRegister(value)])\n .add(['const/any'], ({ value, constants }) => ['dynamic', constants.getValue<unknown>(value)])\n .add(['variable'], ({ value, meta }) => {\n return ['variable', value, { name: meta?.symbols.lexical?.at(value) ?? null }];\n })\n .add(['register/instruction'], ({ value }) => ['instruction', value])\n .add(['imm/enum<curry>'], ({ value }) => ['enum<curry>', decodeCurry(value)])\n .addNullable(['const/str'], ({ value, constants }) => [\n 'string',\n constants.getValue<string>(value),\n ])\n .addNullable(['const/str[]'], ({ value, constants }) => [\n 'array',\n constants.getArray<string>(value),\n { kind: String },\n ])\n .add(['imm/block:handle'], todo)\n .add(['const/definition'], todo)\n .add(['const/fn'], todo)\n .add(['instruction/relative'], ({ value, offset }) => ['instruction', offset + value])\n .add(['register/sN'], todo)\n .add(['register/stack'], todo)\n .add(['register/tN'], todo)\n .add(['register/v0'], todo);\n});\n","/* This file is generated by build/debug.js */\n\nimport type { Nullable, VmMachineOp, VmOp } from '@glimmer/interfaces';\nimport {\n isMachineOp,\n VM_APPEND_DOCUMENT_FRAGMENT_OP,\n VM_APPEND_HTML_OP,\n VM_APPEND_NODE_OP,\n VM_APPEND_SAFE_HTML_OP,\n VM_APPEND_TEXT_OP,\n VM_ASSERT_SAME_OP,\n VM_BEGIN_COMPONENT_TRANSACTION_OP,\n VM_BIND_DYNAMIC_SCOPE_OP,\n VM_CAPTURE_ARGS_OP,\n VM_CHILD_SCOPE_OP,\n VM_CLOSE_ELEMENT_OP,\n VM_COMMENT_OP,\n VM_COMMIT_COMPONENT_TRANSACTION_OP,\n VM_COMPILE_BLOCK_OP,\n VM_COMPONENT_ATTR_OP,\n VM_CONCAT_OP,\n VM_CONSTANT_OP,\n VM_CONSTANT_REFERENCE_OP,\n VM_CONTENT_TYPE_OP,\n VM_CREATE_COMPONENT_OP,\n VM_CURRY_OP,\n VM_DEBUGGER_OP,\n VM_DID_CREATE_ELEMENT_OP,\n VM_DID_RENDER_LAYOUT_OP,\n VM_DUP_OP,\n VM_DYNAMIC_ATTR_OP,\n VM_DYNAMIC_CONTENT_TYPE_OP,\n VM_DYNAMIC_HELPER_OP,\n VM_ENTER_LIST_OP,\n VM_ENTER_OP,\n VM_EXIT_LIST_OP,\n VM_EXIT_OP,\n VM_FETCH_OP,\n VM_FLUSH_ELEMENT_OP,\n VM_GET_BLOCK_OP,\n VM_GET_COMPONENT_LAYOUT_OP,\n VM_GET_COMPONENT_SELF_OP,\n VM_GET_COMPONENT_TAG_NAME_OP,\n VM_GET_PROPERTY_OP,\n VM_GET_VARIABLE_OP,\n VM_HAS_BLOCK_OP,\n VM_HAS_BLOCK_PARAMS_OP,\n VM_HELPER_OP,\n VM_IF_INLINE_OP,\n VM_INVOKE_COMPONENT_LAYOUT_OP,\n VM_INVOKE_STATIC_OP,\n VM_INVOKE_VIRTUAL_OP,\n VM_INVOKE_YIELD_OP,\n VM_ITERATE_OP,\n VM_JUMP_EQ_OP,\n VM_JUMP_IF_OP,\n VM_JUMP_OP,\n VM_JUMP_UNLESS_OP,\n VM_LOAD_OP,\n VM_MACHINE_SIZE,\n VM_MAIN_OP,\n VM_MODIFIER_OP,\n VM_NOT_OP,\n VM_OPEN_DYNAMIC_ELEMENT_OP,\n VM_OPEN_ELEMENT_OP,\n VM_POP_ARGS_OP,\n VM_POP_DYNAMIC_SCOPE_OP,\n VM_POP_FRAME_OP,\n VM_POP_OP,\n VM_POP_REMOTE_ELEMENT_OP,\n VM_POP_SCOPE_OP,\n VM_POPULATE_LAYOUT_OP,\n VM_PREPARE_ARGS_OP,\n VM_PRIMITIVE_OP,\n VM_PRIMITIVE_REFERENCE_OP,\n VM_PUSH_ARGS_OP,\n VM_PUSH_BLOCK_SCOPE_OP,\n VM_PUSH_COMPONENT_DEFINITION_OP,\n VM_PUSH_DYNAMIC_COMPONENT_INSTANCE_OP,\n VM_PUSH_DYNAMIC_SCOPE_OP,\n VM_PUSH_EMPTY_ARGS_OP,\n VM_PUSH_FRAME_OP,\n VM_PUSH_REMOTE_ELEMENT_OP,\n VM_PUSH_SYMBOL_TABLE_OP,\n VM_PUT_COMPONENT_OPERATIONS_OP,\n VM_REGISTER_COMPONENT_DESTRUCTOR_OP,\n VM_REIFY_U32_OP,\n VM_RESOLVE_DYNAMIC_COMPONENT_OP,\n VM_RETURN_OP,\n VM_RETURN_TO_OP,\n VM_ROOT_SCOPE_OP,\n VM_SET_BLOCK_OP,\n VM_SET_BLOCKS_OP,\n VM_SET_NAMED_VARIABLES_OP,\n VM_SET_VARIABLE_OP,\n VM_SPREAD_BLOCK_OP,\n VM_STATIC_ATTR_OP,\n VM_SYSCALL_SIZE,\n VM_TEXT_OP,\n VM_TO_BOOLEAN_OP,\n VM_VIRTUAL_ROOT_SCOPE_OP,\n} from '@glimmer/constants';\nimport { LOCAL_DEBUG } from '@glimmer/local-debug-flags';\n\nimport type { NormalizedMetadata } from './metadata';\n\nexport function opcodeMetadata(op: VmOp | VmMachineOp): Nullable<NormalizedMetadata> {\n if (!LOCAL_DEBUG) {\n return null;\n }\n\n let value = isMachineOp(op) ? MACHINE_METADATA[op] : METADATA[op];\n\n return value || null;\n}\n\nconst METADATA = new Array<Nullable<NormalizedMetadata>>(VM_SYSCALL_SIZE).fill(null);\nconst MACHINE_METADATA = new Array<Nullable<NormalizedMetadata>>(VM_MACHINE_SIZE).fill(null);\n\nif (LOCAL_DEBUG) {\n MACHINE_METADATA[VM_PUSH_FRAME_OP] = {\n name: 'PushFrame',\n mnemonic: 'pushf',\n stackChange: 2,\n };\n\n MACHINE_METADATA[VM_POP_FRAME_OP] = {\n name: 'PopFrame',\n mnemonic: 'popf',\n stackChange: -2,\n check: false,\n };\n\n MACHINE_METADATA[VM_INVOKE_VIRTUAL_OP] = {\n name: 'InvokeVirtual',\n mnemonic: 'vcall',\n stackChange: -1,\n };\n\n MACHINE_METADATA[VM_INVOKE_STATIC_OP] = {\n name: 'InvokeStatic',\n mnemonic: 'scall',\n stackChange: 0,\n ops: ['offset:handle/block'],\n };\n\n MACHINE_METADATA[VM_JUMP_OP] = {\n name: 'Jump',\n mnemonic: 'goto',\n stackChange: 0,\n ops: ['to:instruction/relative'],\n };\n\n MACHINE_METADATA[VM_RETURN_OP] = {\n name: 'Return',\n mnemonic: 'ret',\n stackChange: 0,\n check: false,\n };\n\n MACHINE_METADATA[VM_RETURN_TO_OP] = {\n name: 'ReturnTo',\n mnemonic: 'setra',\n stackChange: 0,\n ops: ['offset:instruction/relative'],\n };\n\n METADATA[VM_HELPER_OP] = {\n name: 'Helper',\n mnemonic: 'ncall',\n stackChange: null,\n ops: ['helper:handle'],\n };\n\n METADATA[VM_DYNAMIC_HELPER_OP] = {\n name: 'DynamicHelper',\n mnemonic: 'dynamiccall',\n stackChange: null,\n };\n\n METADATA[VM_SET_NAMED_VARIABLES_OP] = {\n name: 'SetNamedVariables',\n mnemonic: 'vsargs',\n stackChange: 0,\n ops: ['register:register'],\n };\n\n METADATA[VM_SET_BLOCKS_OP] = {\n name: 'SetBlocks',\n mnemonic: 'vbblocks',\n stackChange: 0,\n ops: ['register:register'],\n };\n\n METADATA[VM_SET_VARIABLE_OP] = {\n name: 'SetVariable',\n mnemonic: 'sbvar',\n stackChange: -1,\n ops: ['symbol:variable'],\n };\n\n METADATA[VM_SET_BLOCK_OP] = {\n name: 'SetBlock',\n mnemonic: 'sblock',\n stackChange: -3,\n ops: ['symbol:variable'],\n };\n\n METADATA[VM_GET_VARIABLE_OP] = {\n name: 'GetVariable',\n mnemonic: 'symload',\n stackChange: 1,\n ops: ['symbol:variable'],\n };\n\n METADATA[VM_GET_PROPERTY_OP] = {\n name: 'GetProperty',\n mnemonic: 'getprop',\n stackChange: 0,\n ops: ['property:const/str'],\n };\n\n METADATA[VM_GET_BLOCK_OP] = {\n name: 'GetBlock',\n mnemonic: 'blockload',\n stackChange: 1,\n ops: ['block:variable'],\n };\n\n METADATA[VM_SPREAD_BLOCK_OP] = {\n name: 'SpreadBlock',\n mnemonic: 'blockspread',\n stackChange: 2,\n };\n\n METADATA[VM_HAS_BLOCK_OP] = {\n name: 'HasBlock',\n mnemonic: 'hasblockload',\n stackChange: 0,\n };\n\n METADATA[VM_HAS_BLOCK_PARAMS_OP] = {\n name: 'HasBlockParams',\n mnemonic: 'hasparamsload',\n stackChange: -2,\n };\n\n METADATA[VM_CONCAT_OP] = {\n name: 'Concat',\n mnemonic: 'concat',\n stackChange: null,\n ops: ['count:imm/u32'],\n };\n\n METADATA[VM_IF_INLINE_OP] = {\n name: 'IfInline',\n mnemonic: 'ifinline',\n stackChange: -2,\n };\n\n METADATA[VM_NOT_OP] = {\n name: 'Not',\n mnemonic: 'not',\n stackChange: 0,\n };\n\n METADATA[VM_CONSTANT_OP] = {\n name: 'Constant',\n mnemonic: 'rconstload',\n stackChange: 1,\n ops: ['constant:const/any'],\n };\n\n METADATA[VM_CONSTANT_REFERENCE_OP] = {\n name: 'ConstantReference',\n mnemonic: 'rconstrefload',\n stackChange: 1,\n ops: ['constant:const/any'],\n };\n\n METADATA[VM_PRIMITIVE_OP] = {\n name: 'Primitive',\n mnemonic: 'pconstload',\n stackChange: 1,\n ops: ['constant:const/primitive'],\n };\n\n METADATA[VM_PRIMITIVE_REFERENCE_OP] = {\n name: 'PrimitiveReference',\n mnemonic: 'ptoref',\n stackChange: 0,\n };\n\n METADATA[VM_REIFY_U32_OP] = {\n name: 'ReifyU32',\n mnemonic: 'reifyload',\n stackChange: 1,\n };\n\n METADATA[VM_DUP_OP] = {\n name: 'Dup',\n mnemonic: 'dup',\n stackChange: 1,\n ops: ['register:register', 'offset:imm/u32'],\n };\n\n METADATA[VM_POP_OP] = {\n name: 'Pop',\n mnemonic: 'pop',\n stackChange: 0,\n ops: ['count:imm/u32'],\n check: false,\n };\n\n METADATA[VM_LOAD_OP] = {\n name: 'Load',\n mnemonic: 'put',\n stackChange: -1,\n ops: ['register:register'],\n };\n\n METADATA[VM_FETCH_OP] = {\n name: 'Fetch',\n mnemonic: 'regload',\n stackChange: 1,\n ops: ['register:register'],\n };\n\n METADATA[VM_ROOT_SCOPE_OP] = {\n name: 'RootScope',\n mnemonic: 'rscopepush',\n stackChange: 0,\n ops: ['symbols:imm/u32'],\n };\n\n METADATA[VM_VIRTUAL_ROOT_SCOPE_OP] = {\n name: 'VirtualRootScope',\n mnemonic: 'vrscopepush',\n stackChange: 0,\n ops: ['register:register'],\n };\n\n METADATA[VM_CHILD_SCOPE_OP] = {\n name: 'ChildScope',\n mnemonic: 'cscopepush',\n stackChange: 0,\n };\n\n METADATA[VM_POP_SCOPE_OP] = {\n name: 'PopScope',\n mnemonic: 'scopepop',\n stackChange: 0,\n };\n\n METADATA[VM_TEXT_OP] = {\n name: 'Text',\n mnemonic: 'apnd_text',\n stackChange: 0,\n ops: ['contents:const/str'],\n };\n\n METADATA[VM_COMMENT_OP] = {\n name: 'Comment',\n mnemonic: 'apnd_comment',\n stackChange: 0,\n ops: ['contents:const/str'],\n };\n\n METADATA[VM_APPEND_HTML_OP] = {\n name: 'AppendHTML',\n mnemonic: 'apnd_dynhtml',\n stackChange: -1,\n };\n\n METADATA[VM_APPEND_SAFE_HTML_OP] = {\n name: 'AppendSafeHTML',\n mnemonic: 'apnd_dynshtml',\n stackChange: -1,\n };\n\n METADATA[VM_APPEND_DOCUMENT_FRAGMENT_OP] = {\n name: 'AppendDocumentFragment',\n mnemonic: 'apnd_dynfrag',\n stackChange: -1,\n };\n\n METADATA[VM_APPEND_NODE_OP] = {\n name: 'AppendNode',\n mnemonic: 'apnd_dynnode',\n stackChange: -1,\n };\n\n METADATA[VM_APPEND_TEXT_OP] = {\n name: 'AppendText',\n mnemonic: 'apnd_dyntext',\n stackChange: -1,\n };\n\n METADATA[VM_OPEN_ELEMENT_OP] = {\n name: 'OpenElement',\n mnemonic: 'apnd_tag',\n stackChange: 0,\n ops: ['tag:const/str'],\n };\n\n METADATA[VM_OPEN_DYNAMIC_ELEMENT_OP] = {\n name: 'OpenDynamicElement',\n mnemonic: 'apnd_dyntag',\n stackChange: -1,\n };\n\n METADATA[VM_PUSH_REMOTE_ELEMENT_OP] = {\n name: 'PushRemoteElement',\n mnemonic: 'apnd_remotetag',\n stackChange: -3,\n };\n\n METADATA[VM_STATIC_ATTR_OP] = {\n name: 'StaticAttr',\n mnemonic: 'apnd_attr',\n stackChange: 0,\n ops: ['name:const/str', 'value:const/str', 'namespace:const/str?'],\n };\n\n METADATA[VM_DYNAMIC_ATTR_OP] = {\n name: 'DynamicAttr',\n mnemonic: 'apnd_dynattr',\n stackChange: -1,\n ops: ['name:const/str', 'value:const/str'],\n };\n\n METADATA[VM_COMPONENT_ATTR_OP] = {\n name: 'ComponentAttr',\n mnemonic: 'apnd_cattr',\n stackChange: -1,\n ops: ['name:const/str', 'value:const/str', 'namespace:const/str?'],\n };\n\n METADATA[VM_FLUSH_ELEMENT_OP] = {\n name: 'FlushElement',\n mnemonic: 'apnd_flushtag',\n stackChange: 0,\n };\n\n METADATA[VM_CLOSE_ELEMENT_OP] = {\n name: 'CloseElement',\n mnemonic: 'apnd_closetag',\n stackChange: 0,\n };\n\n METADATA[VM_POP_REMOTE_ELEMENT_OP] = {\n name: 'PopRemoteElement',\n mnemonic: 'apnd_closeremotetag',\n stackChange: 0,\n };\n\n METADATA[VM_MODIFIER_OP] = {\n name: 'Modifier',\n mnemonic: 'apnd_modifier',\n stackChange: -1,\n ops: ['helper:handle'],\n };\n\n METADATA[VM_BIND_DYNAMIC_SCOPE_OP] = {\n name: 'BindDynamicScope',\n mnemonic: 'setdynscope',\n stackChange: null,\n ops: ['names:const/str[]'],\n };\n\n METADATA[VM_PUSH_DYNAMIC_SCOPE_OP] = {\n name: 'PushDynamicScope',\n mnemonic: 'dynscopepush',\n stackChange: 0,\n };\n\n METADATA[VM_POP_DYNAMIC_SCOPE_OP] = {\n name: 'PopDynamicScope',\n mnemonic: 'dynscopepop',\n stackChange: 0,\n };\n\n METADATA[VM_COMPILE_BLOCK_OP] = {\n name: 'CompileBlock',\n mnemonic: 'cmpblock',\n stackChange: 0,\n };\n\n METADATA[VM_PUSH_BLOCK_SCOPE_OP] = {\n name: 'PushBlockScope',\n mnemonic: 'scopeload',\n stackChange: 1,\n };\n\n METADATA[VM_PUSH_SYMBOL_TABLE_OP] = {\n name: 'PushSymbolTable',\n mnemonic: 'dsymload',\n stackChange: 1,\n };\n\n METADATA[VM_INVOKE_YIELD_OP] = {\n name: 'InvokeYield',\n mnemonic: 'invokeyield',\n stackChange: null,\n };\n\n METADATA[VM_JUMP_IF_OP] = {\n name: 'JumpIf',\n mnemonic: 'iftrue',\n stackChange: -1,\n ops: ['to:instruction/relative'],\n };\n\n METADATA[VM_JUMP_UNLESS_OP] = {\n name: 'JumpUnless',\n mnemonic: 'iffalse',\n stackChange: -1,\n ops: ['to:instruction/relative'],\n };\n\n METADATA[VM_JUMP_EQ_OP] = {\n name: 'JumpEq',\n mnemonic: 'ifeq',\n stackChange: 0,\n ops: ['to:instruction/relative', 'comparison:imm/i32'],\n };\n\n METADATA[VM_ASSERT_SAME_OP] = {\n name: 'AssertSame',\n mnemonic: 'assert_eq',\n stackChange: 0,\n };\n\n METADATA[VM_ENTER_OP] = {\n name: 'Enter',\n mnemonic: 'blk_start',\n stackChange: 0,\n ops: ['args:imm/u32'],\n };\n\n METADATA[VM_EXIT_OP] = {\n name: 'Exit',\n mnemonic: 'blk_end',\n stackChange: 0,\n };\n\n METADATA[VM_TO_BOOLEAN_OP] = {\n name: 'ToBoolean',\n mnemonic: 'anytobool',\n stackChange: 0,\n };\n\n METADATA[VM_ENTER_LIST_OP] = {\n name: 'EnterList',\n mnemonic: 'list_start',\n stackChange: null,\n ops: ['start:instruction/relative', 'else:instruction/relative'],\n };\n\n METADATA[VM_EXIT_LIST_OP] = {\n name: 'ExitList',\n mnemonic: 'list_end',\n stackChange: 0,\n };\n\n METADATA[VM_ITERATE_OP] = {\n name: 'Iterate',\n mnemonic: 'iter',\n stackChange: 0,\n ops: ['end:instruction/relative'],\n check: false,\n };\n\n METADATA[VM_MAIN_OP] = {\n name: 'Main',\n mnemonic: 'main',\n stackChange: -2,\n ops: ['state:register'],\n };\n\n METADATA[VM_CONTENT_TYPE_OP] = {\n name: 'ContentType',\n mnemonic: 'ctload',\n stackChange: 1,\n };\n\n METADATA[VM_DYNAMIC_CONTENT_TYPE_OP] = {\n name: 'DynamicContentType',\n mnemonic: 'dctload',\n stackChange: 1,\n };\n\n METADATA[VM_CURRY_OP] = {\n name: 'Curry',\n mnemonic: 'curry',\n stackChange: null,\n ops: ['type:imm/enum<curry>', 'strict?:const/bool'],\n };\n\n METADATA[VM_PUSH_COMPONENT_DEFINITION_OP] = {\n name: 'PushComponentDefinition',\n mnemonic: 'cmload',\n stackChange: 1,\n ops: ['spec:handle'],\n };\n\n METADATA[VM_PUSH_DYNAMIC_COMPONENT_INSTANCE_OP] = {\n name: 'PushDynamicComponentInstance',\n mnemonic: 'dciload',\n stackChange: 0,\n };\n\n METADATA[VM_RESOLVE_DYNAMIC_COMPONENT_OP] = {\n name: 'ResolveDynamicComponent',\n mnemonic: 'cdload',\n stackChange: 0,\n ops: ['strict?:imm/bool'],\n };\n\n METADATA[VM_PUSH_ARGS_OP] = {\n name: 'PushArgs',\n mnemonic: 'argsload',\n stackChange: null,\n ops: ['names:const/str[]', 'block-names:const/str[]', 'flags:imm/u32'],\n };\n\n METADATA[VM_PUSH_EMPTY_ARGS_OP] = {\n name: 'PushEmptyArgs',\n mnemonic: 'emptyargsload',\n stackChange: 1,\n };\n\n METADATA[VM_POP_ARGS_OP] = {\n name: 'PopArgs',\n mnemonic: 'argspop',\n stackChange: null,\n };\n\n METADATA[VM_PREPARE_ARGS_OP] = {\n name: 'PrepareArgs',\n mnemonic: 'argsprep',\n stackChange: 0,\n ops: ['state:register'],\n check: false,\n };\n\n METADATA[VM_CAPTURE_ARGS_OP] = {\n name: 'CaptureArgs',\n mnemonic: 'argscapture',\n stackChange: 0,\n };\n\n METADATA[VM_CREATE_COMPONENT_OP] = {\n name: 'CreateComponent',\n mnemonic: 'comp_create',\n stackChange: 0,\n ops: ['flags:imm/i32'],\n };\n\n METADATA[VM_REGISTER_COMPONENT_DESTRUCTOR_OP] = {\n name: 'RegisterComponentDestructor',\n mnemonic: 'comp_dest',\n stackChange: 0,\n ops: ['state:register'],\n };\n\n METADATA[VM_PUT_COMPONENT_OPERATIONS_OP] = {\n name: 'PutComponentOperations',\n mnemonic: 'comp_elops',\n stackChange: 0,\n };\n\n METADATA[VM_GET_COMPONENT_SELF_OP] = {\n name: 'GetComponentSelf',\n mnemonic: 'comp_selfload',\n stackChange: 1,\n ops: ['state:register'],\n };\n\n METADATA[VM_GET_COMPONENT_TAG_NAME_OP] = {\n name: 'GetComponentTagName',\n mnemonic: 'comp_tagload',\n stackChange: 1,\n ops: ['state:register'],\n };\n\n METADATA[VM_GET_COMPONENT_LAYOUT_OP] = {\n name: 'GetComponentLayout',\n mnemonic: 'comp_layoutload',\n stackChange: 2,\n ops: ['state:register'],\n };\n\n METADATA[VM_POPULATE_LAYOUT_OP] = {\n name: 'PopulateLayout',\n mnemonic: 'comp_layoutput',\n stackChange: -2,\n ops: ['state:register'],\n };\n\n METADATA[VM_INVOKE_COMPONENT_LAYOUT_OP] = {\n name: 'InvokeComponentLayout',\n mnemonic: 'comp_invokelayout',\n stackChange: 0,\n ops: ['state:register'],\n };\n\n METADATA[VM_BEGIN_COMPONENT_TRANSACTION_OP] = {\n name: 'BeginComponentTransaction',\n mnemonic: 'comp_begin',\n stackChange: 0,\n };\n\n METADATA[VM_COMMIT_COMPONENT_TRANSACTION_OP] = {\n name: 'CommitComponentTransaction',\n mnemonic: 'comp_commit',\n stackChange: 0,\n };\n\n METADATA[VM_DID_CREATE_ELEMENT_OP] = {\n name: 'DidCreateElement',\n mnemonic: 'comp_created',\n stackChange: 0,\n ops: ['state:register'],\n };\n\n METADATA[VM_DID_RENDER_LAYOUT_OP] = {\n name: 'DidRenderLayout',\n mnemonic: 'comp_rendered',\n stackChange: 0,\n ops: ['state:register'],\n };\n\n METADATA[VM_DEBUGGER_OP] = {\n name: 'Debugger',\n mnemonic: 'debugger',\n stackChange: 0,\n ops: ['symbols:const/any'],\n };\n}\n","export const ANNOTATION_STYLES = [\n 'background-color: oklch(93% 0.03 300); color: oklch(34% 0.18 300)',\n 'background-color: oklch(93% 0.03 250); color: oklch(34% 0.18 250)',\n 'background-color: oklch(93% 0.03 200); color: oklch(34% 0.18 200)',\n 'background-color: oklch(93% 0.03 150); color: oklch(34% 0.18 150)',\n 'background-color: oklch(93% 0.03 100); color: oklch(34% 0.18 100)',\n 'background-color: oklch(93% 0.03 50); color: oklch(34% 0.18 50)',\n 'background-color: oklch(93% 0.03 0); color: oklch(34% 0.18 0)',\n] as const;\n","import type { LogLine } from './entry';\nimport type { DisplayFragmentOptions, FlushedLines } from './logger';\n\nimport { ANNOTATION_STYLES } from './annotations';\n\n/**\n * The `LogFragmentBuffer` is responsible for collecting the fragments that are logged to the\n * `DebugLogger` so that they can be accumulated during a group and flushed together.\n *\n * This queuing serves two purposes:\n *\n * 1. To allow the individual fragments that make up a single line to append their values to\n * the current line. To accomplish this, each fragment can append static content and its\n * formatting specifier (e.g. `%o`) to the accumulated {@link #template} *and* append the\n * value to format to the {@link #substitutions} array.\n * 2. To allow logs that refer to objects to be represented as footnotes in the current line,\n * with the footnote to be printed in a later line.\n *\n * This allows a list of fragments, each of which represent formattable values, to be flattened\n * into a single template string and an array of values to format.\n *\n * ## Footnotes\n *\n * An opcode slice containing constant references will be logged like this:\n *\n * ```\n * ...\n * 362. (PushArgs names=[] block-names=[] flags=16)\n * 366. (Helper helper=[0])\n * [0] glimmerHelper()\n * 368. (PopFrame)\n * 369. (Fetch register=$v0)\n * 371. (Primitive constant=\"/index.html\")\n * ...\n * ```\n *\n * The fragment for line `366` includes an `ObjectFragment` for the helper value. When logged,\n * the object will be represented as a footnote and the value will be printed in a later\n * line.\n */\nexport class LogFragmentBuffer {\n /**\n * The first parameter to the `console.log` family of APIs is a *template* that can use\n * format specifiers (e.g. `%c`, `%o`, and `%O`) to refer to subsequent parameters.\n *\n * When a fragment is appended to a line,\n */\n #template = '';\n\n /**\n * Each format specified in the {@link #template} corresponds to a value in the\n * `#substitutions` array.\n */\n readonly #substitutions: unknown[] = [];\n\n /**\n * The logging options for the buffer, which currently only contains `showSubtle`.\n *\n * When fragments call the buffer's {@linkcode append} method, they specify whether the\n * content to append is subtle or not. If the buffer is not configured to show subtle\n * content, the content is not appended.\n *\n * This allows fragments to append content to the buffer without having to know how the\n * buffer is configured.\n */\n readonly #options: DisplayFragmentOptions;\n\n /**\n * A single line can produce multiple queued log entries. This happens when fragments\n * append *footnotes* to the buffer. A *reference* to the footnote is appended to the\n * primary line, and a line containing the *value* of the footnote is appended to the\n * `#queued` array.\n *\n * Both the primary line and any queued footnotes are flushed together when the buffer\n * is flushed.\n */\n readonly #footnotes: QueuedEntry[] = [];\n #nextFootnote = 1;\n #style = 0;\n\n constructor(options: DisplayFragmentOptions) {\n this.#options = options;\n }\n\n /**\n * Add a footnoted value to the current buffer.\n *\n * If the `subtle` option is set, the fragment will only be printed if the buffer is configured\n * to show subtle content.\n *\n * This method takes two callbacks: `add` and `append`.\n *\n * The `append` callback behaves like {@linkcode append}, but without the `subtle` argument. If\n * `addFootnoted` is called with `subtle: false`, then the callback will never be called, so\n * there is no need to pass the `subtle` argument again.\n *\n * The `add` callback is responsible for appending the footnote itself to the buffer. The first\n * parameter to `add` (`useNumber`) specifies whether the caller has used the footnote number\n * to refer to the footnote.\n *\n * This is typically true, but fragments can specify an alternative annotation that should be used\n * instead of the default footnote number. In that case, the footnote number is not used, and the\n * next footnote is free to use it.\n *\n * The `add` callback also takes a template string and an optional list of substitutions, which\n * describe the way the footnote itself should be formatted.\n */\n addFootnoted(\n subtle: boolean,\n add: (footnote: { n: number; style: string }, child: LogFragmentBuffer) => boolean\n ) {\n if (subtle && !this.#options.showSubtle) return;\n\n const child = new LogFragmentBuffer(this.#options);\n\n const style = ANNOTATION_STYLES[this.#style++ % ANNOTATION_STYLES.length] as string;\n\n const usedNumber = add({ n: this.#nextFootnote, style }, child);\n\n if (usedNumber) {\n this.#nextFootnote += 1;\n }\n\n this.#footnotes.push({\n type: 'line',\n subtle: false,\n template: child.#template,\n substitutions: child.#substitutions,\n });\n\n this.#footnotes.push(...child.#footnotes);\n }\n\n /**\n * Append a fragment to the current buffer.\n *\n * If the `subtle` option is set, the fragment will only be printed if the buffer is configured\n * to show subtle content.\n */\n append(subtle: boolean, template: string, ...substitutions: unknown[]) {\n if (subtle && !this.#options.showSubtle) return;\n this.#template += template;\n\n this.#substitutions.push(...substitutions);\n }\n\n #mapLine(line: QueuedLine): LogLine[] {\n if (line.subtle && !this.#options.showSubtle) return [];\n return [{ type: 'line', line: [line.template, ...line.substitutions] }];\n }\n\n flush(): FlushedLines {\n return [\n { type: 'line', line: [this.#template, ...this.#substitutions] },\n ...this.#footnotes.flatMap((queued) => this.#mapLine(queued)),\n ];\n }\n}\n\ninterface QueuedLine {\n type: 'line';\n subtle: boolean;\n template: string;\n substitutions: unknown[];\n}\n\ntype QueuedEntry = QueuedLine;\n","// inspired by https://github.com/ChromeDevTools/devtools-frontend/blob/c2c17396c9e0da3f1ce6514c3a946f88a06b17f2/front_end/ui/legacy/themeColors.css#L65\nexport const STYLES = {\n var: 'color: grey',\n varReference: 'color: blue; text-decoration: underline',\n varBinding: 'color: blue;',\n specialVar: 'color: blue',\n prop: 'color: grey',\n specialProp: 'color: red',\n token: 'color: green',\n def: 'color: blue',\n builtin: 'color: blue',\n punct: 'color: GrayText',\n kw: 'color: rgb(185 0 99 / 100%);',\n type: 'color: teal',\n number: 'color: blue',\n string: 'color: red',\n null: 'color: grey',\n specialString: 'color: darkred',\n atom: 'color: blue',\n attrName: 'color: orange',\n attrValue: 'color: blue',\n boolean: 'color: blue',\n comment: 'color: green',\n meta: 'color: grey',\n register: 'color: purple',\n constant: 'color: purple',\n dim: 'color: grey',\n internals: 'color: lightgrey; font-style: italic',\n\n diffAdd: 'color: Highlight',\n diffDelete: 'color: SelectedItemText; background-color: SelectedItem',\n diffChange: 'color: MarkText; background-color: Mark',\n\n sublabel: 'font-style: italic; color: grey',\n error: 'color: red',\n label: 'text-decoration: underline',\n errorLabel: 'color: darkred; font-style: italic',\n errorMessage: 'color: darkred; text-decoration: underline',\n stack: 'color: grey; font-style: italic',\n unbold: 'font-weight: normal',\n pointer: 'background-color: lavender; color: indigo',\n pointee: 'background-color: lavender; color: indigo',\n focus: 'font-weight: bold',\n focusColor: 'background-color: lightred; color: darkred',\n} as const;\n\nexport type StyleName = keyof typeof STYLES;\n\nexport function mergeStyle(a?: string, b?: string): string | undefined {\n if (a && b) {\n return `${a}; ${b}`;\n } else {\n return a || b;\n }\n}\n","import type { StyleName } from './styles';\n\nimport { STYLES } from './styles';\n\nexport type Format = { style: string };\nexport type IntoFormat = { style: string } | StyleName;\n\nexport function intoFormat(format: IntoFormat): Format {\n if (typeof format === 'string') {\n return { style: STYLES[format] };\n } else {\n return format;\n }\n}\n\nexport function formats(...formats: IntoFormat[]) {\n return formats.map((c) => intoFormat(c).style).join('; ');\n}\n","import type { AnyFn, SimpleNode } from '@glimmer/interfaces';\n\nimport type { Fragment } from './fragment';\n\nexport const FORMATTERS = {\n value: '%O',\n string: '%s',\n integer: '%d',\n float: '%f',\n special: '%o',\n} as const;\n\ninterface AbstractLeafFragment {\n readonly value: unknown;\n readonly style?: string | undefined;\n readonly subtle?: boolean;\n}\n\n/**\n * A leaf fragment that represents an arbitrary value.\n *\n * When the value is a primitive, the fragment is appended to the buffer as if it was an instance of\n * the appropriate leaf fragment type (e.g. strings are appended as if they were `StringFragment`).\n *\n * Otherwise, `ValueFragment` is appended to the current line as a footnote reference and the value\n * itself is appended to a later line that *defines* the footnote using the `%O` format specifier.\n */\nexport interface ValueFragment extends AbstractLeafFragment {\n readonly kind: 'value';\n readonly value: unknown;\n\n /**\n * The `ValueFragment` is appended to the current line as a footnote reference (e.g. `[1]`) and\n * the value itself is appended to a later line that *defines* the footnote (e.g. `[1]\n * ObjectHere`).\n *\n * By default, the footnote reference is an incrementing number per log line, and the footnote\n * value is formatted using the `%O` format specifier.\n *\n * The `display` property can be provided to override these defaults.\n */\n readonly display?:\n | { ref: string; footnote?: Fragment | undefined }\n | { inline: Fragment }\n | undefined;\n}\n\n/**\n * A leaf fragment that represents a string value.\n *\n * Corresponds to the `%s` format specifier.\n */\nexport interface StringFragment extends AbstractLeafFragment {\n readonly kind: 'string';\n readonly value: string;\n}\n\n/**\n * A leaf fragment that represents an integer value.\n *\n * Corresponds to the `%d` format specifier.\n */\nexport interface IntegerFragment extends AbstractLeafFragment {\n readonly kind: 'integer';\n readonly value: number;\n}\n\n/**\n * A leaf fragment that represents a float value.\n *\n * Corresponds to the `%f` format specifier.\n */\nexport interface FloatFragment extends AbstractLeafFragment {\n readonly kind: 'float';\n readonly value: number;\n}\n\n/**\n * A leaf fragment that represents a DOM node.\n *\n * Corresponds to the `%o` format specifier.\n */\nexport interface SpecialFragment extends AbstractLeafFragment {\n readonly kind: 'special';\n readonly value: SimpleNode | Node | AnyFn | unknown[];\n}\n\n/**\n * The list of leaf fragment types correspond exactly to the list of console.log\n * format specifiers.\n */\nexport type LeafFragmentType =\n | StringFragment\n | IntegerFragment\n | FloatFragment\n | ValueFragment\n | SpecialFragment;\n\nexport type FragmentType =\n | LeafFragmentType\n | {\n kind: 'multi';\n value: LeafFragment[];\n };\n\nexport type LeafFragment = Fragment<LeafFragmentType>;\n","import type { AnyFn, SimpleNode } from '@glimmer/interfaces';\nimport { assertNever } from '@glimmer/debug-util';\n\nimport type { Loggable } from './entry';\nimport type { IntoFormat } from './format';\nimport type {\n FloatFragment,\n FragmentType,\n IntegerFragment,\n LeafFragment,\n SpecialFragment,\n StringFragment,\n} from './fragment-type';\nimport type { DisplayFragmentOptions } from './logger';\n\nimport { LogFragmentBuffer } from './buffer';\nimport { formats } from './format';\nimport { FORMATTERS } from './fragment-type';\nimport { mergeStyle, STYLES } from './styles';\n\n/**\n * @import { StyleName } from './styles';\n */\n\n/**\n * Fragment is the most fundamental building block of the debug logger.\n *\n */\nexport class Fragment<T extends FragmentType = FragmentType> {\n static integer(\n this: void,\n value: number,\n options?: Omit<IntegerFragment, 'kind' | 'value'>\n ): Fragment<IntegerFragment> {\n return new Fragment({ kind: 'integer', value, ...options });\n }\n\n static float(\n this: void,\n value: number,\n options?: Omit<FloatFragment, 'kind' | 'value'>\n ): Fragment<FloatFragment> {\n return new Fragment({ kind: 'float', value, ...options });\n }\n\n static string(\n this: void,\n value: string,\n options?: Omit<StringFragment, 'kind' | 'value'>\n ): Fragment<StringFragment> {\n return new Fragment({ kind: 'string', value, ...options });\n }\n\n static special(\n this: void,\n value: Node | SimpleNode | AnyFn | unknown[],\n options?: Omit<SpecialFragment, 'kind' | 'value'>\n ): Fragment<SpecialFragment> {\n return new Fragment({ kind: 'special', value, ...options });\n }\n\n readonly #type: T;\n\n constructor(type: T) {\n this.#type = type;\n }\n\n /**\n * A subtle fragment is only printed if the `showSubtle` option is set.\n *\n * Returns true if this fragment is a subtle leaf or is a multi fragment\n * with all subtle leaves.\n */\n isSubtle(): boolean {\n return this.leaves().every((leaf) => leaf.#type.subtle);\n }\n\n /**\n * If the current fragment is not empty, apply `ifPresent` to the current\n * fragment. Otherwise, do nothing.\n *\n * If the current fragment is subtle, the result is also subtle.\n */\n map(ifPresent: (value: Fragment) => Fragment): Fragment {\n if (this.isEmpty()) return this;\n const fragment = ifPresent(this);\n return this.isSubtle() ? fragment.subtle() : fragment;\n }\n\n /**\n * A fragment is empty if it should not be printed with the provided display options.\n *\n * This means that if a fragment is subtle and `showSubtle` is false, the fragment is empty.\n */\n isEmpty(options: DisplayFragmentOptions = { showSubtle: true }): boolean {\n return this.leaves().every((leaf) => !leaf.#shouldShow(options));\n }\n\n /**\n * Returns an array of {@linkcode LeafFragment}s that make up the current\n * fragment.\n *\n * This effectively flattens any number of nested multi-fragments into a flat array of leaf\n * fragments.\n */\n leaves(): LeafFragment[] {\n if (this.#type.kind === 'multi') {\n return this.#type.value.flatMap((f) => f.leaves());\n } else if (this.#type.kind === 'string' && this.#type.value === '') {\n return [];\n } else {\n return [this as LeafFragment];\n }\n }\n\n /**\n * Returns a fragment with the specified subtle status without mutating the current fragment.\n *\n * If `isSubtle` is true, the fragment will also be styled with the `subtle` style.\n */\n subtle(isSubtle = true): Fragment<T> {\n if (!this.isSubtle() && !isSubtle) {\n return this;\n }\n\n const fragment = this.#subtle(isSubtle);\n return isSubtle ? fragment.styleAll('dim') : fragment;\n }\n\n #subtle(isSubtle: boolean): Fragment<T> {\n if (this.#type.kind === 'multi') {\n return new Fragment({\n ...this.#type,\n value: this.leaves().flatMap((f) => f.subtle(isSubtle).leaves()),\n });\n } else {\n return new Fragment({\n ...this.#type,\n subtle: isSubtle,\n });\n }\n }\n\n /**\n * Apply the specified styles to the current fragment (if it's a leaf) or all\n * of its children (if it's a multi-fragment).\n *\n * Keep in mind that merging styles might be very difficult to undo, so treat\n * this as a low-level operation, and prefer to use higher-level concepts like\n * `subtle` if you can instead.\n */\n styleAll(...allFormats: IntoFormat[]): Fragment<T> {\n if (allFormats.length === 0) return this;\n\n if (this.#type.kind === 'multi') {\n return new Fragment({\n ...this.#type,\n value: this.#type.value.flatMap((f) => f.styleAll(...allFormats).leaves()),\n });\n } else {\n return new Fragment({\n ...this.#type,\n style: mergeStyle(this.#type.style, formats(...allFormats)),\n });\n }\n }\n\n /**\n * Convert the current fragment into a string with no additional formatting.\n * The primary purpose for this method is to support converting a fragment\n * into a string for inclusion in thrown Errors. If you're going to *log*\n * a fragment, log it using `DebugLogger` and don't convert it to\n * a string first.\n */\n stringify(options: DisplayFragmentOptions): string {\n return this.leaves()\n .filter((leaf) => leaf.#shouldShow(options))\n .map((leaf) => {\n const fragment = leaf.#type;\n\n if (fragment.kind === 'value') {\n return `<object>`;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string -- @fixme\n return String(fragment.value);\n }\n })\n .join('');\n }\n\n /**\n * Should the current fragment be printed with the provided display options?\n *\n * Importantly, if the current fragment contains subtle content but the `showSubtle` option is\n * false, `#shouldShow` will return false.\n *\n * @see isEmpty\n */\n #shouldShow(options: DisplayFragmentOptions): boolean {\n return this.leaves().some((leaf) => {\n const fragment = leaf.#type;\n\n if (fragment.subtle && !options.showSubtle) {\n return false;\n } else if (fragment.kind === 'string' && fragment.value === '') {\n return false;\n }\n\n return true;\n });\n }\n\n /**\n * Convert this fragment into a Loggable for logging through the `DebugLogger`.\n */\n toLoggable(options: DisplayFragmentOptions): Loggable {\n const buffer = new LogFragmentBuffer(options);\n\n for (const leaf of this.leaves()) {\n leaf.appendTo(buffer);\n }\n\n return buffer.flush();\n }\n\n /**\n * Append this fragment to the low-level `LogFragmentBuffer`.\n */\n appendTo(buffer: LogFragmentBuffer): void {\n const fragment = this.#type;\n const subtle = this.isSubtle();\n\n // If the fragment is a multi fragment, append each of its leaves to the buffer\n // and return.\n if (fragment.kind === 'multi') {\n for (const f of fragment.value) {\n f.appendTo(buffer);\n }\n\n return;\n }\n\n // If the fragment is a value fragment and the value is a primitive, give it special\n // treatment since we can trivially serialize it.\n if (fragment.kind === 'value') {\n // If the value is a string or number, convert it into a string, float or integer\n // fragment and append that instead. This means that strings and numbers are\n // represented the same way in logs whether they are explicitly created as string,\n // float or integer fragments *or* whether they are the value of a value fragment.\n if (typeof fragment.value === 'string') {\n return Fragment.string(JSON.stringify(fragment.value), {\n style: STYLES.string,\n subtle,\n }).appendTo(buffer);\n } else if (typeof fragment.value === 'number') {\n const f = fragment.value % 1 === 0 ? Fragment.integer : Fragment.float;\n return f(fragment.value, {\n style: STYLES.number,\n subtle,\n }).appendTo(buffer);\n\n // Alternatively, if the value of a `value` fragment is `null` or `undefined`,\n // append the string `null` or `undefined`, respectively with the `null` style.\n } else if (fragment.value === null || fragment.value === undefined) {\n return Fragment.string('null', {\n style: STYLES.null,\n subtle: this.isSubtle(),\n }).appendTo(buffer);\n\n // Finally, if the value of a `value` fragment is boolean, append the string\n // `true` or `false` with the `boolean` style.\n } else if (typeof fragment.value === 'boolean') {\n return Fragment.string(String(fragment.value), {\n style: STYLES.boolean,\n subtle,\n }).appendTo(buffer);\n }\n\n // All other values (i.e. objects and functions) are represented as footnotes and\n // are handled below.\n }\n\n switch (fragment.kind) {\n // strings are appended using %s\n case 'string':\n // integers are appended using %d\n case 'integer':\n // floats are appended using %f\n case 'float':\n buffer.append(\n fragment.subtle ?? false,\n `%c${FORMATTERS[fragment.kind]}`,\n fragment.style,\n fragment.value\n );\n break;\n // the remaining value types are represented as footnotes\n // dom nodes are appended to the footnote line using %o\n case 'special':\n // values are appended to the footnote line using %O\n case 'value': {\n // If a fragment has an associated annotation, we'll use the annotation as the\n // footnote rather than the footnote number.\n const override = fragment.kind === 'value' ? fragment.display : undefined;\n\n buffer.addFootnoted(fragment.subtle ?? false, ({ n, style }, footnote) => {\n const appendValueAsFootnote = (ref: string) =>\n void footnote.append(\n subtle,\n `%c| %c[${ref}]%c ${FORMATTERS[fragment.kind]}`,\n STYLES.dim,\n style,\n '',\n fragment.value\n );\n\n if (override) {\n if ('inline' in override) {\n override.inline.subtle(subtle).appendTo(footnote);\n return false;\n }\n\n buffer.append(subtle, `%c[${override.ref}]%c`, style, '');\n\n if (override.footnote) {\n frag`${as.dim('| ')}${override.footnote}`.subtle(subtle).appendTo(footnote);\n } else {\n appendValueAsFootnote(override.ref);\n }\n return false;\n }\n\n buffer.append(subtle, `%c[${n}]%c`, style, '');\n appendValueAsFootnote(String(n));\n return true;\n });\n\n break;\n }\n default:\n assertNever(fragment);\n }\n }\n}\n\nexport type IntoFragment = Fragment | IntoFragment[] | number | string | null;\ntype IntoLeafFragment = LeafFragment | number | string | null;\n\nexport function intoFragment(value: IntoFragment): Fragment {\n const fragments = intoFragments(value);\n const [first, ...rest] = fragments;\n\n if (first !== undefined && rest.length === 0) {\n return first;\n }\n\n return new Fragment({ kind: 'multi', value: fragments });\n}\n\nfunction intoFragments(value: IntoFragment): LeafFragment[] {\n if (Array.isArray(value)) {\n return value.flatMap(intoFragments);\n } else if (typeof value === 'object' && value !== null) {\n return value.leaves();\n } else {\n return [intoLeafFragment(value)];\n }\n}\n\nfunction intoLeafFragment(value: IntoLeafFragment): LeafFragment {\n if (value === null) {\n return new Fragment({ kind: 'value', value: null });\n } else if (typeof value === 'number') {\n return new Fragment({ kind: 'integer', value });\n } else if (typeof value === 'string') {\n // If the string contains only whitespace and punctuation, we can treat it as a\n // punctuation fragment.\n if (/^[\\s\\p{P}\\p{Sm}]*$/u.test(value)) {\n return new Fragment({ kind: 'string', value, style: STYLES.punct });\n } else {\n return new Fragment({ kind: 'string', value });\n }\n } else {\n return value;\n }\n}\n\nexport function frag(strings: TemplateStringsArray, ...values: IntoFragment[]): Fragment {\n const buffer: LeafFragment[] = [];\n\n strings.forEach((string, i) => {\n buffer.push(...intoFragment(string).leaves());\n const dynamic = values[i];\n if (dynamic) {\n buffer.push(...intoFragment(dynamic).leaves());\n }\n });\n\n return new Fragment({ kind: 'multi', value: buffer });\n}\n\nexport const as = Object.fromEntries(\n Object.entries(STYLES).map(([k, v]) => [\n k,\n (value: IntoFragment): Fragment => intoFragment(value).styleAll({ style: v }),\n ])\n) as {\n [K in keyof typeof STYLES]: ((value: IntoLeafFragment) => LeafFragment) &\n ((value: IntoFragment) => Fragment);\n};\n","import { DEBUG } from '@glimmer/env';\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * This package contains global context functions for Glimmer. These functions\n * are set by the embedding environment and must be set before initial render.\n *\n * These functions should meet the following criteria:\n *\n * - Must be provided by the embedder, due to having framework specific\n * behaviors (e.g. interop with classic Ember behaviors that should not be\n * upstreamed) or to being out of scope for the VM (e.g. scheduling a\n * revalidation)\n * - Never differ between render roots\n * - Never change over time\n *\n */\n\n//////////\n\n/**\n * Interfaces\n *\n * TODO: Move these into @glimmer/interfaces, move @glimmer/interfaces to\n * @glimmer/internal-interfaces.\n */\ninterface IteratorDelegate {\n isEmpty(): boolean;\n next(): { value: unknown; memo: unknown } | null;\n}\n\nexport type Destroyable = object;\nexport type Destructor<T extends Destroyable> = (destroyable: T) => void;\n\n//////////\n\n/**\n * Schedules a VM revalidation.\n *\n * Note: this has a default value so that tags can warm themselves when first loaded.\n */\nexport let scheduleRevalidate: () => void = () => {};\n\n/**\n * Schedules a destructor to run\n *\n * @param destroyable The destroyable being destroyed\n * @param destructor The destructor being scheduled\n */\nexport let scheduleDestroy: <T extends Destroyable>(\n destroyable: T,\n destructor: Destructor<T>\n) => void;\n\n/**\n * Finalizes destruction\n *\n * @param finalizer finalizer function\n */\nexport let scheduleDestroyed: (finalizer: () => void) => void;\n\n/**\n * Hook to provide iterators for `{{each}}` loops\n *\n * @param value The value to create an iterator for\n */\nexport let toIterator: (value: unknown) => IteratorDelegate | null;\n\n/**\n * Hook to specify truthiness within Glimmer templates\n *\n * @param value The value to convert to a boolean\n */\nexport let toBool: (value: unknown) => boolean;\n\n/**\n * Hook for specifying how Glimmer should access properties in cases where it\n * needs to. For instance, accessing an object's values in templates.\n *\n * @param obj The object provided to get a value from\n * @param path The path to get the value from\n */\nexport let getProp: (obj: object, path: string) => unknown;\n\n/**\n * Hook for specifying how Glimmer should update props in cases where it needs\n * to. For instance, when updating a template reference (e.g. 2-way-binding)\n *\n * @param obj The object provided to get a value from\n * @param prop The prop to set the value at\n * @param value The value to set the value to\n */\nexport let setProp: (obj: object, prop: string, value: unknown) => void;\n\n/**\n * Hook for specifying how Glimmer should access paths in cases where it needs\n * to. For instance, the `key` value of `{{each}}` loops.\n *\n * @param obj The object provided to get a value from\n * @param path The path to get the value from\n */\nexport let getPath: (obj: object, path: string) => unknown;\n\n/**\n * Hook for specifying how Glimmer should update paths in cases where it needs\n * to. For instance, when updating a template reference (e.g. 2-way-binding)\n *\n * @param obj The object provided to get a value from\n * @param path The path to get the value from\n */\nexport let setPath: (obj: object, path: string, value: unknown) => unknown;\n\n/**\n * Hook to warn if a style binding string or value was not marked as trusted\n * (e.g. HTMLSafe)\n */\nexport let warnIfStyleNotTrusted: (value: unknown) => void;\n\n/**\n * Hook to customize assertion messages in the VM. Usages can be stripped out\n * by using the @glimmer/vm-babel-plugins package.\n */\nexport let assert: (test: unknown, msg: string, options?: { id: string }) => asserts test;\n\nexport function debugAssert(\n test: unknown,\n msg: string | (() => string),\n options?: { id: string }\n): asserts test {\n if (DEBUG && assert) {\n assert(test, typeof msg === 'string' ? msg : msg(), options);\n }\n}\n\n/**\n * Hook to customize deprecation messages in the VM. Usages can be stripped out\n * by using the @glimmer/vm-babel-plugins package.\n */\nexport let deprecate: (\n msg: string,\n test: unknown,\n options: {\n id: string;\n }\n) => void;\n\n//////////\n\nexport interface GlobalContext {\n scheduleRevalidate: () => void;\n scheduleDestroy: <T extends Destroyable>(destroyable: T, destructor: Destructor<T>) => void;\n scheduleDestroyed: (finalizer: () => void) => void;\n toIterator: (value: unknown) => IteratorDelegate | null;\n toBool: (value: unknown) => boolean;\n getProp: (obj: object, path: string) => unknown;\n setProp: (obj: object, prop: string, value: unknown) => void;\n getPath: (obj: object, path: string) => unknown;\n setPath: (obj: object, prop: string, value: unknown) => void;\n warnIfStyleNotTrusted: (value: unknown) => void;\n assert: (test: unknown, msg: string, options?: { id: string }) => asserts test;\n deprecate: (\n msg: string,\n test: unknown,\n options: {\n id: string;\n }\n ) => void;\n FEATURES?: {\n DEFAULT_HELPER_MANAGER?: boolean;\n };\n}\n\nlet globalContextWasSet = false;\n\nexport default function setGlobalContext(context: GlobalContext) {\n if (DEBUG) {\n if (globalContextWasSet) {\n throw new Error('Attempted to set the global context twice. This should only be set once.');\n }\n\n globalContextWasSet = true;\n }\n\n scheduleRevalidate = context.scheduleRevalidate;\n scheduleDestroy = context.scheduleDestroy;\n scheduleDestroyed = context.scheduleDestroyed;\n toIterator = context.toIterator;\n toBool = context.toBool;\n getProp = context.getProp;\n setProp = context.setProp;\n getPath = context.getPath;\n setPath = context.setPath;\n warnIfStyleNotTrusted = context.warnIfStyleNotTrusted;\n assert = context.assert;\n deprecate = context.deprecate;\n}\n\nexport let assertGlobalContextWasSet: (() => void) | undefined;\nexport let testOverrideGlobalContext:\n | ((context: Partial<GlobalContext> | null) => GlobalContext | null)\n | undefined;\n\nif (DEBUG) {\n assertGlobalContextWasSet = () => {\n if (!globalContextWasSet) {\n throw new Error(\n 'The global context for Glimmer VM was not set. You must set these global context functions to let Glimmer VM know how to accomplish certain operations. You can do this by importing `setGlobalContext` from `@glimmer/global-context`'\n );\n }\n };\n\n testOverrideGlobalContext = (context: Partial<GlobalContext> | null) => {\n let originalGlobalContext = globalContextWasSet\n ? {\n scheduleRevalidate,\n scheduleDestroy,\n scheduleDestroyed,\n toIterator,\n toBool,\n getProp,\n setProp,\n getPath,\n setPath,\n warnIfStyleNotTrusted,\n assert,\n deprecate,\n }\n : null;\n\n if (context === null) {\n globalContextWasSet = false;\n } else {\n globalContextWasSet = true;\n }\n\n // We use `undefined as any` here to unset the values when resetting the\n // context at the end of a test.\n scheduleRevalidate = context?.scheduleRevalidate || (undefined as any);\n scheduleDestroy = context?.scheduleDestroy || (undefined as any);\n scheduleDestroyed = context?.scheduleDestroyed || (undefined as any);\n toIterator = context?.toIterator || (undefined as any);\n toBool = context?.toBool || (undefined as any);\n getProp = context?.getProp || (undefined as any);\n setProp = context?.setProp || (undefined as any);\n getPath = context?.getPath || (undefined as any);\n setPath = context?.setPath || (undefined as any);\n warnIfStyleNotTrusted = context?.warnIfStyleNotTrusted || (undefined as any);\n assert = context?.assert || (undefined as any);\n deprecate = context?.deprecate || (undefined as any);\n\n return originalGlobalContext;\n };\n}\n","import { DEBUG } from '@glimmer/env';\n/* eslint-disable @typescript-eslint/no-non-null-assertion -- @fixme */\nimport type { Tag } from '@glimmer/interfaces';\nimport { asPresentArray, getLast } from '@glimmer/debug-util';\nimport { assert } from '@glimmer/global-context';\n\ninterface DebugTransaction {\n beginTrackingTransaction?:\n | undefined\n | ((debuggingContext?: string | false, deprecate?: boolean) => void);\n endTrackingTransaction?: undefined | (() => void);\n runInTrackingTransaction?: undefined | (<T>(fn: () => T, debuggingContext?: string | false) => T);\n\n resetTrackingTransaction?: undefined | (() => string);\n setTrackingTransactionEnv?:\n | undefined\n | ((env: { debugMessage?(obj?: unknown, keyName?: string): string }) => void);\n assertTagNotConsumed?:\n | undefined\n | (<T>(tag: Tag, obj?: T, keyName?: keyof T | string | symbol) => void);\n\n markTagAsConsumed?: undefined | ((_tag: Tag) => void);\n\n logTrackingStack?: undefined | ((transaction?: Transaction) => string);\n}\n\nexport const debug: DebugTransaction = {};\n\ninterface Transaction {\n parent: Transaction | null;\n debugLabel?: string | undefined;\n}\n\nif (DEBUG) {\n let CONSUMED_TAGS: WeakMap<Tag, Transaction> | null = null;\n\n const TRANSACTION_STACK: Transaction[] = [];\n\n /////////\n\n const TRANSACTION_ENV = {\n debugMessage(obj?: unknown, keyName?: string) {\n let objName;\n\n if (typeof obj === 'function') {\n objName = obj.name;\n } else if (typeof obj === 'object' && obj !== null) {\n let className = obj.constructor.name || '(unknown class)';\n\n objName = `(an instance of ${className})`;\n } else if (obj === undefined) {\n objName = '(an unknown tag)';\n } else {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n objName = String(obj);\n }\n\n let dirtyString = keyName ? `\\`${keyName}\\` on \\`${objName}\\`` : `\\`${objName}\\``;\n\n return `You attempted to update ${dirtyString}, but it had already been used previously in the same computation. Attempting to update a value after using it in a computation can cause logical errors, infinite revalidation bugs, and performance issues, and is not supported.`;\n },\n };\n\n debug.setTrackingTransactionEnv = (env) => Object.assign(TRANSACTION_ENV, env);\n\n debug.beginTrackingTransaction = (_debugLabel?: string | false) => {\n CONSUMED_TAGS = CONSUMED_TAGS || new WeakMap();\n\n let debugLabel = _debugLabel || undefined;\n\n let parent = TRANSACTION_STACK[TRANSACTION_STACK.length - 1] ?? null;\n\n TRANSACTION_STACK.push({\n parent,\n debugLabel,\n });\n };\n\n debug.endTrackingTransaction = () => {\n if (TRANSACTION_STACK.length === 0) {\n throw new Error('attempted to close a tracking transaction, but one was not open');\n }\n\n TRANSACTION_STACK.pop();\n\n if (TRANSACTION_STACK.length === 0) {\n CONSUMED_TAGS = null;\n }\n };\n\n debug.resetTrackingTransaction = () => {\n let stack = '';\n\n if (TRANSACTION_STACK.length > 0) {\n stack = debug.logTrackingStack!(TRANSACTION_STACK[TRANSACTION_STACK.length - 1]);\n }\n\n TRANSACTION_STACK.splice(0, TRANSACTION_STACK.length);\n CONSUMED_TAGS = null;\n\n return stack;\n };\n\n /**\n * Creates a global autotracking transaction. This will prevent any backflow\n * in any `track` calls within the transaction, even if they are not\n * externally consumed.\n *\n * `runInAutotrackingTransaction` can be called within itself, and it will add\n * onto the existing transaction if one exists.\n *\n * TODO: Only throw an error if the `track` is consumed.\n */\n debug.runInTrackingTransaction = <T>(fn: () => T, debugLabel?: string | false) => {\n debug.beginTrackingTransaction!(debugLabel);\n let didError = true;\n\n try {\n let value = fn();\n didError = false;\n return value;\n } finally {\n if (!didError) {\n debug.endTrackingTransaction!();\n }\n\n // if (id !== TRANSACTION_STACK.length) {\n // throw new Error(\n // `attempted to close a tracking transaction (${id}), but it was not the last transaction (${TRANSACTION_STACK.length})`\n // );\n // }\n }\n };\n\n let nthIndex = (str: string, pattern: string, n: number, startingPos = -1) => {\n let i = startingPos;\n\n while (n-- > 0 && i++ < str.length) {\n i = str.indexOf(pattern, i);\n if (i < 0) break;\n }\n\n return i;\n };\n\n let makeTrackingErrorMessage = <T>(\n transaction: Transaction,\n obj?: T,\n keyName?: keyof T | string | symbol\n ) => {\n let message = [TRANSACTION_ENV.debugMessage(obj, keyName && String(keyName))];\n\n message.push(`\\`${String(keyName)}\\` was first used:`);\n\n message.push(debug.logTrackingStack!(transaction));\n\n message.push(`Stack trace for the update:`);\n\n return message.join('\\n\\n');\n };\n\n debug.logTrackingStack = (transaction?: Transaction) => {\n let trackingStack = [];\n let current: Transaction | null | undefined =\n transaction || TRANSACTION_STACK[TRANSACTION_STACK.length - 1];\n\n if (current === undefined) return '';\n\n while (current) {\n if (current.debugLabel) {\n trackingStack.unshift(current.debugLabel);\n }\n\n current = current.parent;\n }\n\n return trackingStack.map((label, index) => ' '.repeat(2 * index) + label).join('\\n');\n };\n\n debug.markTagAsConsumed = (_tag: Tag) => {\n if (!CONSUMED_TAGS || CONSUMED_TAGS.has(_tag)) return;\n\n CONSUMED_TAGS.set(_tag, getLast(asPresentArray(TRANSACTION_STACK)));\n\n // We need to mark the tag and all of its subtags as consumed, so we need to\n // cast it and access its internals. In the future this shouldn't be necessary,\n // this is only for computed properties.\n let subtag = (_tag as unknown as { subtag: Tag | Tag[] | null }).subtag;\n\n if (!subtag || !debug.markTagAsConsumed) return;\n\n if (Array.isArray(subtag)) {\n subtag.forEach(debug.markTagAsConsumed);\n } else {\n debug.markTagAsConsumed(subtag);\n }\n };\n\n debug.assertTagNotConsumed = <T>(tag: Tag, obj?: T, keyName?: keyof T | string | symbol) => {\n if (CONSUMED_TAGS === null) return;\n\n let transaction = CONSUMED_TAGS.get(tag);\n\n if (!transaction) return;\n\n // This hack makes the assertion message nicer, we can cut off the first\n // few lines of the stack trace and let users know where the actual error\n // occurred.\n try {\n assert(false, makeTrackingErrorMessage(transaction, obj, keyName));\n } catch (e) {\n if (hasStack(e)) {\n let updateStackBegin = e.stack.indexOf('Stack trace for the update:');\n\n if (updateStackBegin !== -1) {\n let start = nthIndex(e.stack, '\\n', 1, updateStackBegin);\n let end = nthIndex(e.stack, '\\n', 4, updateStackBegin);\n\n e.stack = e.stack.substr(0, start) + e.stack.substr(end);\n }\n }\n\n throw e;\n }\n };\n}\n\nfunction hasStack(error: unknown): error is { stack: string } {\n return (\n typeof error === 'object' &&\n error !== null &&\n 'stack' in error &&\n typeof error.stack === 'string'\n );\n}\n","export type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (\n k: infer I\n) => void\n ? I\n : never;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyKey = keyof any;\nexport type Indexable = Record<AnyKey, unknown>;\n\nexport function unwrap<T>(val: T | null | undefined): T {\n if (val === null || val === undefined) throw new Error(`Expected value to be present`);\n return val as T;\n}\n","import { DEBUG } from '@glimmer/env';\nimport type {\n COMBINATOR_TAG_ID as ICOMBINATOR_TAG_ID,\n CONSTANT_TAG_ID as ICONSTANT_TAG_ID,\n ConstantTag,\n CURRENT_TAG_ID as ICURRENT_TAG_ID,\n DIRTYABLE_TAG_ID as IDIRTYABLE_TAG_ID,\n DirtyableTag,\n MonomorphicTagId,\n Tag,\n TagComputeSymbol,\n TagTypeSymbol,\n UPDATABLE_TAG_ID as IUPDATABLE_TAG_ID,\n UpdatableTag,\n VOLATILE_TAG_ID as IVOLATILE_TAG_ID,\n} from '@glimmer/interfaces';\nimport { scheduleRevalidate } from '@glimmer/global-context';\n\nimport { debug } from './debug';\nimport { unwrap } from './utils';\n\n//////////\n\nexport type Revision = number;\n\nexport const CONSTANT: Revision = 0;\nexport const INITIAL: Revision = 1;\nexport const VOLATILE: Revision = NaN;\n\nexport let $REVISION = INITIAL;\n\nexport function bump(): void {\n $REVISION++;\n}\n\n//////////\n\nconst DIRYTABLE_TAG_ID: IDIRTYABLE_TAG_ID = 0;\nconst UPDATABLE_TAG_ID: IUPDATABLE_TAG_ID = 1;\nconst COMBINATOR_TAG_ID: ICOMBINATOR_TAG_ID = 2;\nconst CONSTANT_TAG_ID: ICONSTANT_TAG_ID = 3;\n\n//////////\n\nexport const COMPUTE: TagComputeSymbol = Symbol('TAG_COMPUTE') as TagComputeSymbol;\nReflect.set(globalThis, 'COMPUTE_SYMBOL', COMPUTE);\n\n//////////\n\n/**\n * `value` receives a tag and returns an opaque Revision based on that tag. This\n * snapshot can then later be passed to `validate` with the same tag to\n * determine if the tag has changed at all since the time that `value` was\n * called.\n *\n * @param tag\n */\nexport function valueForTag(tag: Tag): Revision {\n return tag[COMPUTE]();\n}\n\n/**\n * `validate` receives a tag and a snapshot from a previous call to `value` with\n * the same tag, and determines if the tag is still valid compared to the\n * snapshot. If the tag's state has changed at all since then, `validate` will\n * return false, otherwise it will return true. This is used to determine if a\n * calculation related to the tags should be rerun.\n *\n * @param tag\n * @param snapshot\n */\nexport function validateTag(tag: Tag, snapshot: Revision): boolean {\n return snapshot >= tag[COMPUTE]();\n}\n\n//////////\n\nconst TYPE: TagTypeSymbol = Symbol('TAG_TYPE') as TagTypeSymbol;\n\n// this is basically a const\nexport let ALLOW_CYCLES: WeakMap<Tag, boolean> | undefined;\n\nif (DEBUG) {\n ALLOW_CYCLES = new WeakMap();\n}\n\nfunction allowsCycles(tag: Tag): boolean {\n if (ALLOW_CYCLES === undefined) {\n return true;\n } else {\n return ALLOW_CYCLES.has(tag);\n }\n}\n\nclass MonomorphicTagImpl<T extends MonomorphicTagId = MonomorphicTagId> {\n static combine(this: void, tags: Tag[]): Tag {\n switch (tags.length) {\n case 0:\n return CONSTANT_TAG;\n case 1:\n return tags[0] as Tag;\n default: {\n let tag: MonomorphicTagImpl = new MonomorphicTagImpl(COMBINATOR_TAG_ID);\n tag.subtag = tags;\n return tag;\n }\n }\n }\n\n private revision = INITIAL;\n private lastChecked = INITIAL;\n private lastValue = INITIAL;\n\n private isUpdating = false;\n public subtag: Tag | Tag[] | null = null;\n private subtagBufferCache: Revision | null = null;\n\n declare [TYPE]: T;\n\n constructor(type: T) {\n this[TYPE] = type;\n }\n\n [COMPUTE](): Revision {\n let { lastChecked } = this;\n\n if (this.isUpdating) {\n if (DEBUG && !allowsCycles(this)) {\n throw new Error('Cycles in tags are not allowed');\n }\n\n this.lastChecked = ++$REVISION;\n } else if (lastChecked !== $REVISION) {\n this.isUpdating = true;\n this.lastChecked = $REVISION;\n\n try {\n let { subtag, revision } = this;\n\n if (subtag !== null) {\n if (Array.isArray(subtag)) {\n for (const tag of subtag) {\n let value = tag[COMPUTE]();\n revision = Math.max(value, revision);\n }\n } else {\n let subtagValue = subtag[COMPUTE]();\n\n if (subtagValue === this.subtagBufferCache) {\n revision = Math.max(revision, this.lastValue);\n } else {\n // Clear the temporary buffer cache\n this.subtagBufferCache = null;\n revision = Math.max(revision, subtagValue);\n }\n }\n }\n\n this.lastValue = revision;\n } finally {\n this.isUpdating = false;\n }\n }\n\n return this.lastValue;\n }\n\n static updateTag(this: void, _tag: UpdatableTag, _subtag: Tag) {\n // catch bug by non-TS users\n\n if (DEBUG && _tag[TYPE] !== UPDATABLE_TAG_ID) {\n throw new Error('Attempted to update a tag that was not updatable');\n }\n\n // TODO: TS 3.7 should allow us to do this via assertion\n let tag = _tag as MonomorphicTagImpl;\n let subtag = _subtag as MonomorphicTagImpl;\n\n if (subtag === CONSTANT_TAG) {\n tag.subtag = null;\n } else {\n // There are two different possibilities when updating a subtag:\n //\n // 1. subtag[COMPUTE]() <= tag[COMPUTE]();\n // 2. subtag[COMPUTE]() > tag[COMPUTE]();\n //\n // The first possibility is completely fine within our caching model, but\n // the second possibility presents a problem. If the parent tag has\n // already been read, then it's value is cached and will not update to\n // reflect the subtag's greater value. Next time the cache is busted, the\n // subtag's value _will_ be read, and it's value will be _greater_ than\n // the saved snapshot of the parent, causing the resulting calculation to\n // be rerun erroneously.\n //\n // In order to prevent this, when we first update to a new subtag we store\n // its computed value, and then check against that computed value on\n // subsequent updates. If its value hasn't changed, then we return the\n // parent's previous value. Once the subtag changes for the first time,\n // we clear the cache and everything is finally in sync with the parent.\n tag.subtagBufferCache = subtag[COMPUTE]();\n tag.subtag = subtag;\n }\n }\n\n static dirtyTag(\n this: void,\n tag: DirtyableTag | UpdatableTag,\n disableConsumptionAssertion?: boolean\n ) {\n if (\n DEBUG &&\n // catch bug by non-TS users\n\n !(tag[TYPE] === UPDATABLE_TAG_ID || tag[TYPE] === DIRYTABLE_TAG_ID)\n ) {\n throw new Error('Attempted to dirty a tag that was not dirtyable');\n }\n\n if (DEBUG && disableConsumptionAssertion !== true) {\n // Usually by this point, we've already asserted with better error information,\n // but this is our last line of defense.\n unwrap(debug.assertTagNotConsumed)(tag);\n }\n\n (tag as MonomorphicTagImpl).revision = ++$REVISION;\n\n scheduleRevalidate();\n }\n}\n\nexport const DIRTY_TAG = MonomorphicTagImpl.dirtyTag;\nexport const UPDATE_TAG = MonomorphicTagImpl.updateTag;\n\n//////////\n\nexport function createTag(): DirtyableTag {\n return new MonomorphicTagImpl(DIRYTABLE_TAG_ID);\n}\n\nexport function createUpdatableTag(): UpdatableTag {\n return new MonomorphicTagImpl(UPDATABLE_TAG_ID);\n}\n\n//////////\n\nexport const CONSTANT_TAG: ConstantTag = new MonomorphicTagImpl(CONSTANT_TAG_ID);\n\nexport function isConstTag(tag: Tag): tag is ConstantTag {\n return tag === CONSTANT_TAG;\n}\n\n//////////\n\nconst VOLATILE_TAG_ID: IVOLATILE_TAG_ID = 100;\n\nexport class VolatileTag implements Tag {\n readonly [TYPE] = VOLATILE_TAG_ID;\n [COMPUTE](): Revision {\n return VOLATILE;\n }\n}\n\nexport const VOLATILE_TAG = new VolatileTag();\n\n//////////\n\nconst CURRENT_TAG_ID: ICURRENT_TAG_ID = 101;\n\nexport class CurrentTag implements Tag {\n readonly [TYPE] = CURRENT_TAG_ID;\n [COMPUTE](): Revision {\n return $REVISION;\n }\n}\n\nexport const CURRENT_TAG = new CurrentTag();\n\n//////////\n\nexport const combine = MonomorphicTagImpl.combine;\n\n// Warm\n\nlet tag1 = createUpdatableTag();\nlet tag2 = createUpdatableTag();\nlet tag3 = createUpdatableTag();\n\nvalueForTag(tag1);\nDIRTY_TAG(tag1);\nvalueForTag(tag1);\nUPDATE_TAG(tag1, combine([tag2, tag3]));\nvalueForTag(tag1);\nDIRTY_TAG(tag2);\nvalueForTag(tag1);\nDIRTY_TAG(tag3);\nvalueForTag(tag1);\nUPDATE_TAG(tag1, tag3);\nvalueForTag(tag1);\nDIRTY_TAG(tag3);\nvalueForTag(tag1);\n","import { DEBUG } from '@glimmer/env';\nimport type { Tag } from '@glimmer/interfaces';\n\nimport type { Revision } from './validators';\n\nimport { debug } from './debug';\nimport { unwrap } from './utils';\nimport { combine, CONSTANT_TAG, isConstTag, validateTag, valueForTag } from './validators';\n\n/**\n * An object that that tracks @tracked properties that were consumed.\n */\nclass Tracker {\n private tags = new Set<Tag>();\n private last: Tag | null = null;\n\n add(tag: Tag) {\n if (tag === CONSTANT_TAG) return;\n\n this.tags.add(tag);\n\n if (DEBUG) {\n unwrap(debug.markTagAsConsumed)(tag);\n }\n\n this.last = tag;\n }\n\n combine(): Tag {\n let { tags } = this;\n\n if (tags.size === 0) {\n return CONSTANT_TAG;\n } else if (tags.size === 1) {\n return this.last as Tag;\n } else {\n return combine(Array.from(this.tags));\n }\n }\n}\n\n/**\n * Whenever a tracked computed property is entered, the current tracker is\n * saved off and a new tracker is replaced.\n *\n * Any tracked properties consumed are added to the current tracker.\n *\n * When a tracked computed property is exited, the tracker's tags are\n * combined and added to the parent tracker.\n *\n * The consequence is that each tracked computed property has a tag\n * that corresponds to the tracked properties consumed inside of\n * itself, including child tracked computed properties.\n */\nlet CURRENT_TRACKER: Tracker | null = null;\n\nconst OPEN_TRACK_FRAMES: (Tracker | null)[] = [];\n\nexport function beginTrackFrame(debuggingContext?: string | false): void {\n OPEN_TRACK_FRAMES.push(CURRENT_TRACKER);\n\n CURRENT_TRACKER = new Tracker();\n\n if (DEBUG) {\n unwrap(debug.beginTrackingTransaction)(debuggingContext);\n }\n}\n\nexport function endTrackFrame(): Tag {\n let current = CURRENT_TRACKER;\n\n if (DEBUG) {\n if (OPEN_TRACK_FRAMES.length === 0) {\n throw new Error('attempted to close a tracking frame, but one was not open');\n }\n\n unwrap(debug.endTrackingTransaction)();\n }\n\n CURRENT_TRACKER = OPEN_TRACK_FRAMES.pop() || null;\n\n return unwrap(current).combine();\n}\n\nexport function beginUntrackFrame(): void {\n OPEN_TRACK_FRAMES.push(CURRENT_TRACKER);\n CURRENT_TRACKER = null;\n}\n\nexport function endUntrackFrame(): void {\n if (DEBUG && OPEN_TRACK_FRAMES.length === 0) {\n throw new Error('attempted to close a tracking frame, but one was not open');\n }\n\n CURRENT_TRACKER = OPEN_TRACK_FRAMES.pop() || null;\n}\n\n// This function is only for handling errors and resetting to a valid state\nexport function resetTracking(): string | void {\n while (OPEN_TRACK_FRAMES.length > 0) {\n OPEN_TRACK_FRAMES.pop();\n }\n\n CURRENT_TRACKER = null;\n\n if (DEBUG) {\n return unwrap(debug.resetTrackingTransaction)();\n }\n}\n\nexport function isTracking(): boolean {\n return CURRENT_TRACKER !== null;\n}\n\nexport function consumeTag(tag: Tag): void {\n if (CURRENT_TRACKER !== null) {\n CURRENT_TRACKER.add(tag);\n }\n}\n\n//////////\n\nconst CACHE_KEY = Symbol('CACHE_KEY');\n\n// public interface\nexport interface Cache<T = unknown> {\n [CACHE_KEY]: T;\n}\n\nconst FN = Symbol('FN');\nconst LAST_VALUE = Symbol('LAST_VALUE');\nconst TAG = Symbol('TAG');\nconst SNAPSHOT = Symbol('SNAPSHOT');\nconst DEBUG_LABEL = Symbol('DEBUG_LABEL');\n\ninterface InternalCache<T = unknown> {\n [FN]: (...args: unknown[]) => T;\n [LAST_VALUE]: T | undefined;\n [TAG]: Tag | undefined;\n [SNAPSHOT]: Revision;\n [DEBUG_LABEL]?: string | false | undefined;\n}\n\nexport function createCache<T>(fn: () => T, debuggingLabel?: string | false): Cache<T> {\n if (DEBUG && !(typeof fn === 'function')) {\n throw new Error(\n `createCache() must be passed a function as its first parameter. Called with: ${String(fn)}`\n );\n }\n\n let cache: InternalCache<T> = {\n [FN]: fn,\n [LAST_VALUE]: undefined,\n [TAG]: undefined,\n [SNAPSHOT]: -1,\n };\n\n if (DEBUG) {\n cache[DEBUG_LABEL] = debuggingLabel;\n }\n\n return cache as unknown as Cache<T>;\n}\n\nexport function getValue<T>(cache: Cache<T>): T | undefined {\n assertCache(cache, 'getValue');\n\n let fn = cache[FN];\n let tag = cache[TAG];\n let snapshot = cache[SNAPSHOT];\n\n if (tag === undefined || !validateTag(tag, snapshot)) {\n beginTrackFrame();\n\n try {\n cache[LAST_VALUE] = fn();\n } finally {\n tag = endTrackFrame();\n cache[TAG] = tag;\n cache[SNAPSHOT] = valueForTag(tag);\n consumeTag(tag);\n }\n } else {\n consumeTag(tag);\n }\n\n return cache[LAST_VALUE];\n}\n\nexport function isConst(cache: Cache): boolean {\n assertCache(cache, 'isConst');\n\n let tag = cache[TAG];\n\n assertTag(tag, cache);\n\n return isConstTag(tag);\n}\n\nfunction assertCache<T>(\n value: Cache<T> | InternalCache<T>,\n fnName: string\n): asserts value is InternalCache<T> {\n if (DEBUG && !(typeof value === 'object' && FN in value)) {\n throw new Error(\n `${fnName}() can only be used on an instance of a cache created with createCache(). Called with: ${String(\n // eslint-disable-next-line @typescript-eslint/no-base-to-string -- @fixme\n value\n )}`\n );\n }\n}\n\n// replace this with `expect` when we can\nfunction assertTag(tag: Tag | undefined, cache: InternalCache): asserts tag is Tag {\n if (DEBUG && tag === undefined) {\n throw new Error(\n `isConst() can only be used on a cache once getValue() has been called at least once. Called with cache function:\\n\\n${String(\n cache[FN]\n )}`\n );\n }\n}\n\n//////////\n\n// Legacy tracking APIs\n\n// track() shouldn't be necessary at all in the VM once the autotracking\n// refactors are merged, and we should generally be moving away from it. It may\n// be necessary in Ember for a while longer, but I think we'll be able to drop\n// it in favor of cache sooner rather than later.\nexport function track(block: () => void, debugLabel?: string | false): Tag {\n beginTrackFrame(debugLabel);\n\n let tag;\n\n try {\n block();\n } finally {\n tag = endTrackFrame();\n }\n\n return tag;\n}\n\n// untrack() is currently mainly used to handle places that were previously not\n// tracked, and that tracking now would cause backtracking rerender assertions.\n// I think once we move everyone forward onto modern APIs, we'll probably be\n// able to remove it, but I'm not sure yet.\nexport function untrack<T>(callback: () => T): T {\n beginUntrackFrame();\n\n try {\n return callback();\n } finally {\n endUntrackFrame();\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n// Unfortunately, TypeScript's ability to do inference *or* type-checking in a\n// `Proxy`'s body is very limited, so we have to use a number of casts `as any`\n// to make the internal accesses work. The type safety of these is guaranteed at\n// the *call site* instead of within the body: you cannot do `Array.blah` in TS,\n// and it will blow up in JS in exactly the same way, so it is safe to assume\n// that properties within the getter have the correct type in TS.\n\nimport { consumeTag } from '../tracking';\nimport { createUpdatableTag, DIRTY_TAG } from '../validators';\n\nconst ARRAY_GETTER_METHODS = new Set<string | symbol | number>([\n Symbol.iterator,\n 'concat',\n 'entries',\n 'every',\n 'filter',\n 'find',\n 'findIndex',\n 'flat',\n 'flatMap',\n 'forEach',\n 'includes',\n 'indexOf',\n 'join',\n 'keys',\n 'lastIndexOf',\n 'map',\n 'reduce',\n 'reduceRight',\n 'slice',\n 'some',\n 'values',\n]);\n\n// For these methods, `Array` itself immediately gets the `.length` to return\n// after invoking them.\nconst ARRAY_WRITE_THEN_READ_METHODS = new Set<string | symbol>(['fill', 'push', 'unshift']);\n\nfunction convertToInt(prop: number | string | symbol): number | null {\n if (typeof prop === 'symbol') return null;\n\n const num = Number(prop);\n\n if (isNaN(num)) return null;\n\n return num % 1 === 0 ? num : null;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nclass TrackedArray<T = unknown> {\n #options: { equals: (a: T, b: T) => boolean; description: string | undefined };\n\n constructor(\n arr: T[],\n options: { equals: (a: T, b: T) => boolean; description: string | undefined }\n ) {\n this.#options = options;\n\n const clone = arr.slice();\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n const boundFns = new Map<string | symbol, (...args: any[]) => any>();\n\n /**\n Flag to track whether we have *just* intercepted a call to `.push()` or\n `.unshift()`, since in those cases (and only those cases!) the `Array`\n itself checks `.length` to return from the function call.\n */\n let nativelyAccessingLengthFromWriteMethod = false;\n\n return new Proxy(clone, {\n get(target, prop /*, _receiver */) {\n const index = convertToInt(prop);\n\n if (index !== null) {\n self.#readStorageFor(index);\n consumeTag(self.#collection);\n\n return target[index];\n }\n\n if (prop === 'length') {\n // If we are reading `.length`, it may be a normal user-triggered\n // read, or it may be a read triggered by Array itself. In the latter\n // case, it is because we have just done `.push()` or `.unshift()`; in\n // that case it is safe not to mark this as a *read* operation, since\n // calling `.push()` or `.unshift()` cannot otherwise be part of a\n // \"read\" operation safely, and if done during an *existing* read\n // (e.g. if the user has already checked `.length` *prior* to this),\n // that will still trigger the mutation-after-consumption assertion.\n if (nativelyAccessingLengthFromWriteMethod) {\n nativelyAccessingLengthFromWriteMethod = false;\n } else {\n consumeTag(self.#collection);\n }\n\n return target[prop];\n }\n\n // Here, track that we are doing a `.push()` or `.unshift()` by setting\n // the flag to `true` so that when the `.length` is read by `Array` (see\n // immediately above), it knows not to dirty the collection.\n if (ARRAY_WRITE_THEN_READ_METHODS.has(prop)) {\n nativelyAccessingLengthFromWriteMethod = true;\n }\n\n if (ARRAY_GETTER_METHODS.has(prop)) {\n let fn = boundFns.get(prop);\n\n if (fn === undefined) {\n fn = (...args) => {\n consumeTag(self.#collection);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n return (target as any)[prop](...args);\n };\n\n boundFns.set(prop, fn);\n }\n\n return fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n return (target as any)[prop];\n },\n\n set(target, prop, value /*, _receiver */) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument\n let isUnchanged = self.#options.equals((target as any)[prop], value);\n if (isUnchanged) return true;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n (target as any)[prop] = value;\n\n const index = convertToInt(prop);\n\n if (index !== null) {\n self.#dirtyStorageFor(index);\n self.#dirtyCollection();\n } else if (prop === 'length') {\n self.#dirtyCollection();\n }\n\n return true;\n },\n\n getPrototypeOf() {\n return TrackedArray.prototype;\n },\n }) as TrackedArray<T>;\n }\n\n #collection = createUpdatableTag();\n\n #storages = new Map<number, ReturnType<typeof createUpdatableTag>>();\n\n #readStorageFor(index: number) {\n let storage = this.#storages.get(index);\n\n if (storage === undefined) {\n storage = createUpdatableTag();\n this.#storages.set(index, storage);\n }\n\n consumeTag(storage);\n }\n\n #dirtyStorageFor(index: number): void {\n const storage = this.#storages.get(index);\n\n if (storage) {\n DIRTY_TAG(storage);\n }\n }\n\n #dirtyCollection() {\n DIRTY_TAG(this.#collection);\n this.#storages.clear();\n }\n}\n\n// This rule is correct in the general case, but it doesn't understand\n// declaration merging, which is how we're using the interface here. This says\n// `TrackedArray` acts just like `Array<T>`, but also has the properties\n// declared via the `class` declaration above -- but without the cost of a\n// subclass, which is much slower that the proxied array behavior. That is: a\n// `TrackedArray` *is* an `Array`, just with a proxy in front of accessors and\n// setters, rather than a subclass of an `Array` which would be de-optimized by\n// the browsers.\n//\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ninterface TrackedArray<T = unknown> extends Array<T> {}\n\n// Ensure instanceof works correctly\nObject.setPrototypeOf(TrackedArray.prototype, Array.prototype);\n\nexport function trackedArray<T = unknown>(\n data?: T[],\n options?: { equals?: (a: T, b: T) => boolean; description?: string }\n): T[] {\n return new TrackedArray(data ?? [], {\n equals: options?.equals ?? Object.is,\n description: options?.description,\n });\n}\n","import type { ReactiveOptions } from './types';\n\nimport { consumeTag } from '../tracking';\nimport { createUpdatableTag, DIRTY_TAG } from '../validators';\n\nclass TrackedMap<K = unknown, V = unknown> implements Map<K, V> {\n #options: ReactiveOptions<V>;\n #collection = createUpdatableTag();\n #storages = new Map<K, ReturnType<typeof createUpdatableTag>>();\n #vals: Map<K, V>;\n\n #storageFor(key: K): ReturnType<typeof createUpdatableTag> {\n const storages = this.#storages;\n let storage = storages.get(key);\n\n if (storage === undefined) {\n storage = createUpdatableTag();\n storages.set(key, storage);\n }\n\n return storage;\n }\n #dirtyStorageFor(key: K): void {\n const storage = this.#storages.get(key);\n\n if (storage) {\n DIRTY_TAG(storage);\n }\n }\n\n constructor(\n existing: readonly (readonly [K, V])[] | Iterable<readonly [K, V]> | null | Map<K, V>,\n options: ReactiveOptions<V>\n ) {\n // TypeScript doesn't correctly resolve the overloads for calling the `Map`\n // constructor for the no-value constructor. This resolves that.\n this.#vals = existing instanceof Map ? new Map(existing.entries()) : new Map(existing);\n this.#options = options;\n }\n\n get(key: K): V | undefined {\n consumeTag(this.#storageFor(key));\n\n return this.#vals.get(key);\n }\n\n has(key: K): boolean {\n consumeTag(this.#storageFor(key));\n\n return this.#vals.has(key);\n }\n\n // **** ALL GETTERS ****\n entries() {\n consumeTag(this.#collection);\n\n return this.#vals.entries();\n }\n\n getOrInsert(key: K, defaultValue: V): V {\n consumeTag(this.#storageFor(key));\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore -- older versions of TS don't yet have this method\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return this.#vals.getOrInsert(key, defaultValue);\n }\n\n getOrInsertComputed(key: K, creator: (key: K) => V): V {\n consumeTag(this.#storageFor(key));\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore -- older versions of TS don't yet have this method\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return this.#vals.getOrInsertComputed(key, creator);\n }\n\n keys() {\n consumeTag(this.#collection);\n\n return this.#vals.keys();\n }\n\n values() {\n consumeTag(this.#collection);\n\n return this.#vals.values();\n }\n\n forEach(fn: (value: V, key: K, map: Map<K, V>) => void): void {\n consumeTag(this.#collection);\n\n this.#vals.forEach(fn);\n }\n\n get size(): number {\n consumeTag(this.#collection);\n\n return this.#vals.size;\n }\n\n /**\n * When iterating:\n * - we entangle with the collection (as we iterate over the whole thing\n * - for each individual item, we entangle with the item as well\n */\n [Symbol.iterator]() {\n let keys = this.keys();\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let self = this;\n\n return {\n next() {\n let next = keys.next();\n let currentKey = next.value;\n\n if (next.done) {\n return { value: [undefined, undefined], done: true };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return { value: [currentKey, self.get(currentKey!)], done: false };\n },\n } as MapIterator<[K, V]>;\n }\n\n get [Symbol.toStringTag](): string {\n return this.#vals[Symbol.toStringTag];\n }\n\n set(key: K, value: V): this {\n let existing = this.#vals.get(key);\n\n if (existing) {\n let isUnchanged = this.#options.equals(existing, value);\n\n if (isUnchanged) {\n return this;\n }\n }\n\n this.#dirtyStorageFor(key);\n\n if (!existing) {\n DIRTY_TAG(this.#collection);\n }\n\n this.#vals.set(key, value);\n\n return this;\n }\n\n delete(key: K): boolean {\n if (!this.#vals.has(key)) return true;\n\n this.#dirtyStorageFor(key);\n DIRTY_TAG(this.#collection);\n\n this.#storages.delete(key);\n return this.#vals.delete(key);\n }\n\n clear(): void {\n if (this.#vals.size === 0) return;\n\n this.#storages.forEach((s) => DIRTY_TAG(s));\n this.#storages.clear();\n\n DIRTY_TAG(this.#collection);\n this.#vals.clear();\n }\n}\n\n// So instanceof works\nObject.setPrototypeOf(TrackedMap.prototype, Map.prototype);\n\nexport function trackedMap<Key = unknown, Value = unknown>(\n data?:\n | Map<Key, Value>\n | Iterable<readonly [Key, Value]>\n | readonly (readonly [Key, Value])[]\n | null,\n options?: { equals?: (a: Value, b: Value) => boolean; description?: string }\n): Map<Key, Value> {\n return new TrackedMap(data ?? [], {\n equals: options?.equals ?? Object.is,\n description: options?.description,\n });\n}\n","import type { ReactiveOptions } from './types';\n\nimport { consumeTag } from '../tracking';\nimport { createUpdatableTag, DIRTY_TAG } from '../validators';\n\nclass TrackedSet<T = unknown> implements Set<T> {\n #options: ReactiveOptions<T>;\n #collection = createUpdatableTag();\n #storages = new Map<T, ReturnType<typeof createUpdatableTag>>();\n #vals: Set<T>;\n\n #storageFor(key: T): ReturnType<typeof createUpdatableTag> {\n const storages = this.#storages;\n let storage = storages.get(key);\n\n if (storage === undefined) {\n storage = createUpdatableTag();\n storages.set(key, storage);\n }\n\n return storage;\n }\n\n #dirtyStorageFor(key: T): void {\n const storage = this.#storages.get(key);\n\n if (storage) {\n DIRTY_TAG(storage);\n }\n }\n\n constructor(existing: Iterable<T>, options: ReactiveOptions<T>) {\n this.#vals = new Set(existing);\n this.#options = options;\n }\n\n // **** KEY GETTERS ****\n has(value: T): boolean {\n consumeTag(this.#storageFor(value));\n\n return this.#vals.has(value);\n }\n\n // **** ALL GETTERS ****\n entries() {\n consumeTag(this.#collection);\n\n return this.#vals.entries();\n }\n\n keys() {\n consumeTag(this.#collection);\n\n return this.#vals.keys();\n }\n\n values() {\n consumeTag(this.#collection);\n\n return this.#vals.values();\n }\n\n union<U>(other: ReadonlySetLike<U>): Set<T | U> {\n consumeTag(this.#collection);\n\n return this.#vals.union(other);\n }\n\n intersection<U>(other: ReadonlySetLike<U>): Set<T & U> {\n consumeTag(this.#collection);\n\n return this.#vals.intersection(other);\n }\n\n difference<U>(other: ReadonlySetLike<U>): Set<T> {\n consumeTag(this.#collection);\n\n return this.#vals.difference(other);\n }\n\n symmetricDifference<U>(other: ReadonlySetLike<U>): Set<T | U> {\n consumeTag(this.#collection);\n\n return this.#vals.symmetricDifference(other);\n }\n\n isSubsetOf(other: ReadonlySetLike<unknown>): boolean {\n consumeTag(this.#collection);\n\n return this.#vals.isSubsetOf(other);\n }\n\n isSupersetOf(other: ReadonlySetLike<unknown>): boolean {\n consumeTag(this.#collection);\n\n return this.#vals.isSupersetOf(other);\n }\n\n isDisjointFrom(other: ReadonlySetLike<unknown>): boolean {\n consumeTag(this.#collection);\n\n return this.#vals.isDisjointFrom(other);\n }\n\n forEach(fn: (value1: T, value2: T, set: Set<T>) => void): void {\n consumeTag(this.#collection);\n\n this.#vals.forEach(fn);\n }\n\n get size(): number {\n consumeTag(this.#collection);\n\n return this.#vals.size;\n }\n\n [Symbol.iterator]() {\n consumeTag(this.#collection);\n\n return this.#vals[Symbol.iterator]();\n }\n\n get [Symbol.toStringTag](): string {\n return this.#vals[Symbol.toStringTag];\n }\n\n add(value: T): this {\n if (this.#vals.has(value)) {\n let isUnchanged = this.#options.equals(value, value);\n if (isUnchanged) return this;\n } else {\n DIRTY_TAG(this.#collection);\n }\n\n this.#dirtyStorageFor(value);\n\n this.#vals.add(value);\n\n return this;\n }\n\n delete(value: T): boolean {\n if (!this.#vals.has(value)) return true;\n\n this.#dirtyStorageFor(value);\n DIRTY_TAG(this.#collection);\n\n this.#storages.delete(value);\n return this.#vals.delete(value);\n }\n\n // **** ALL SETTERS ****\n clear(): void {\n if (this.#vals.size === 0) return;\n\n this.#storages.forEach((s) => DIRTY_TAG(s));\n DIRTY_TAG(this.#collection);\n\n this.#storages.clear();\n this.#vals.clear();\n }\n}\n\n// So instanceof works\nObject.setPrototypeOf(TrackedSet.prototype, Set.prototype);\n\nexport function trackedSet<Value = unknown>(\n data?: Set<Value> | Value[] | Iterable<Value> | null,\n options?: { equals?: (a: Value, b: Value) => boolean; description?: string }\n): Set<Value> {\n return new TrackedSet(data ?? [], {\n equals: options?.equals ?? Object.is,\n description: options?.description,\n });\n}\n","import type { ReactiveOptions } from './types';\n\nimport { consumeTag } from '../tracking';\nimport { createUpdatableTag, DIRTY_TAG } from '../validators';\n\nclass TrackedWeakMap<K extends WeakKey = object, V = unknown> implements WeakMap<K, V> {\n #options: ReactiveOptions<V>;\n #storages = new WeakMap<K, ReturnType<typeof createUpdatableTag>>();\n #vals: WeakMap<K, V>;\n\n #storageFor(key: K): ReturnType<typeof createUpdatableTag> {\n let storage = this.#storages.get(key);\n\n if (storage === undefined) {\n storage = createUpdatableTag();\n this.#storages.set(key, storage);\n }\n\n return storage;\n }\n #dirtyStorageFor(key: K): void {\n const storage = this.#storages.get(key);\n\n if (storage) {\n DIRTY_TAG(storage);\n }\n }\n\n constructor(\n existing: [K, V][] | Iterable<readonly [K, V]> | WeakMap<K, V>,\n options: ReactiveOptions<V>\n ) {\n /**\n * SAFETY: note that wehn passing in an existing weak map, we can't\n * clone it as it is not iterable and not a supported type of structuredClone\n */\n this.#vals = existing instanceof WeakMap ? existing : new WeakMap<K, V>(existing);\n this.#options = options;\n }\n\n get(key: K): V | undefined {\n consumeTag(this.#storageFor(key));\n\n return this.#vals.get(key);\n }\n\n has(key: K): boolean {\n consumeTag(this.#storageFor(key));\n\n return this.#vals.has(key);\n }\n\n set(key: K, value: V): this {\n let existing = this.#vals.get(key);\n\n if (existing) {\n let isUnchanged = this.#options.equals(existing, value);\n\n if (isUnchanged) {\n return this;\n }\n }\n\n this.#dirtyStorageFor(key);\n\n this.#vals.set(key, value);\n\n return this;\n }\n\n delete(key: K): boolean {\n if (!this.#vals.has(key)) return true;\n\n this.#dirtyStorageFor(key);\n\n this.#storages.delete(key);\n return this.#vals.delete(key);\n }\n\n get [Symbol.toStringTag](): string {\n return this.#vals[Symbol.toStringTag];\n }\n}\n\n// So instanceof works\nObject.setPrototypeOf(TrackedWeakMap.prototype, WeakMap.prototype);\n\nexport function trackedWeakMap<Key extends WeakKey, Value = unknown>(\n data?: WeakMap<Key, Value> | [Key, Value][] | Iterable<readonly [Key, Value]> | null,\n options?: { equals?: (a: Value, b: Value) => boolean; description?: string }\n): WeakMap<Key, Value> {\n return new TrackedWeakMap<Key, Value>(data ?? [], {\n equals: options?.equals ?? Object.is,\n description: options?.description,\n });\n}\n","import { consumeTag } from '../tracking';\nimport { createUpdatableTag, DIRTY_TAG } from '../validators';\n\nclass TrackedWeakSet<T extends WeakKey = object> implements WeakSet<T> {\n #options: { equals: (a: T, b: T) => boolean; description: string | undefined };\n #storages = new WeakMap<T, ReturnType<typeof createUpdatableTag>>();\n #vals: WeakSet<T>;\n\n #storageFor(key: T): ReturnType<typeof createUpdatableTag> {\n let storage = this.#storages.get(key);\n\n if (storage === undefined) {\n storage = createUpdatableTag();\n this.#storages.set(key, storage);\n }\n\n return storage;\n }\n\n #dirtyStorageFor(key: T): void {\n const storage = this.#storages.get(key);\n\n if (storage) {\n DIRTY_TAG(storage);\n }\n }\n\n constructor(\n values: readonly T[],\n options: { equals: (a: T, b: T) => boolean; description: string | undefined }\n ) {\n this.#options = options;\n this.#vals = new WeakSet<T>(values);\n }\n\n has(value: T): boolean {\n consumeTag(this.#storageFor(value));\n\n return this.#vals.has(value);\n }\n\n add(value: T): this {\n /**\n * In a WeakSet, there is no `.get()`, but if there was,\n * we could assume it's the same value as what we passed.\n *\n * So for a WeakSet, if we try to add something that already exists\n * we no-op.\n *\n * WeakSet already does this internally for us,\n * but we want the ability for the reactive behavior to reflect the same behavior.\n *\n * i.e.: doing weakSet.add(value) should never dirty with the defaults\n * if the `value` is already in the weakSet\n */\n if (this.#vals.has(value)) {\n /**\n * This looks a little silly, where a always will === b,\n * but see the note above.\n */\n let isUnchanged = this.#options.equals(value, value);\n if (isUnchanged) return this;\n }\n\n // Add to vals first to get better error message\n this.#vals.add(value);\n\n this.#dirtyStorageFor(value);\n\n return this;\n }\n\n delete(value: T): boolean {\n if (!this.#vals.has(value)) return true;\n\n this.#dirtyStorageFor(value);\n\n this.#storages.delete(value);\n return this.#vals.delete(value);\n }\n\n get [Symbol.toStringTag](): string {\n return this.#vals[Symbol.toStringTag];\n }\n}\n\n// So instanceof works\nObject.setPrototypeOf(TrackedWeakSet.prototype, WeakSet.prototype);\n\n/**\n * NOTE: we cannot pass a WeakSet because WeakSets are not iterable\n */\n/**\n * Creates an instanceof WeakSet from an optional list of entries\n *\n */\nexport function trackedWeakSet<Value extends WeakKey>(\n data?: Value[],\n options?: { equals?: (a: Value, b: Value) => boolean; description?: string }\n): WeakSet<Value> {\n return new TrackedWeakSet<Value>(data ?? [], {\n equals: options?.equals ?? Object.is,\n description: options?.description,\n });\n}\n","const GLIMMER_VALIDATOR_REGISTRATION = Symbol('GLIMMER_VALIDATOR_REGISTRATION');\n\nif (Reflect.has(globalThis, GLIMMER_VALIDATOR_REGISTRATION)) {\n throw new Error(\n 'The `@glimmer/validator` library has been included twice in this application. It could be different versions of the package, or the same version included twice by mistake. `@glimmer/validator` depends on having a single copy of the package in use at any time in an application, even if they are the same version. You must dedupe your build to remove the duplicate packages in order to prevent this error.'\n );\n}\n\nReflect.set(globalThis, GLIMMER_VALIDATOR_REGISTRATION, true);\n\nexport { trackedArray } from './lib/collections/array';\nexport { trackedMap } from './lib/collections/map';\nexport { trackedObject } from './lib/collections/object';\nexport { trackedSet } from './lib/collections/set';\nexport { trackedWeakMap } from './lib/collections/weak-map';\nexport { trackedWeakSet } from './lib/collections/weak-set';\nexport { debug } from './lib/debug';\nexport { dirtyTagFor, tagFor, type TagMeta, tagMetaFor } from './lib/meta';\nexport { trackedData } from './lib/tracked-data';\nexport {\n beginTrackFrame,\n beginUntrackFrame,\n type Cache,\n consumeTag,\n createCache,\n endTrackFrame,\n endUntrackFrame,\n getValue,\n isConst,\n isTracking,\n resetTracking,\n track,\n untrack,\n} from './lib/tracking';\nexport {\n ALLOW_CYCLES,\n bump,\n combine,\n COMPUTE,\n CONSTANT,\n CONSTANT_TAG,\n createTag,\n createUpdatableTag,\n CURRENT_TAG,\n CurrentTag,\n DIRTY_TAG as dirtyTag,\n INITIAL,\n isConstTag,\n type Revision,\n UPDATE_TAG as updateTag,\n validateTag,\n valueForTag,\n VOLATILE,\n VOLATILE_TAG,\n VolatileTag,\n} from './lib/validators';\nexport type {\n CombinatorTag,\n ConstantTag,\n DirtyableTag,\n Tag,\n UpdatableTag,\n} from '@glimmer/interfaces';\n","import { DEBUG } from '@glimmer/env';\nimport type {\n ComputeReference,\n ConstantReference,\n InvokableReference,\n Nullable,\n Reference,\n ReferenceSymbol,\n ReferenceType,\n UnboundReference,\n} from '@glimmer/interfaces';\nimport type { Revision, Tag } from '@glimmer/validator';\nimport { expect } from '@glimmer/debug-util';\nimport { getProp, setProp } from '@glimmer/global-context';\nimport { isDict } from '@glimmer/util';\nimport {\n CONSTANT_TAG,\n consumeTag,\n INITIAL,\n track,\n validateTag,\n valueForTag,\n} from '@glimmer/validator';\n\nexport const REFERENCE: ReferenceSymbol = Symbol('REFERENCE') as ReferenceSymbol;\n\nconst CONSTANT: ConstantReference = 0;\nconst COMPUTE: ComputeReference = 1;\nconst UNBOUND: UnboundReference = 2;\nconst INVOKABLE: InvokableReference = 3;\n\nexport type { Reference as default };\nexport type { Reference };\n\n//////////\n\nexport interface ReferenceEnvironment {\n getProp(obj: unknown, path: string): unknown;\n setProp(obj: unknown, path: string, value: unknown): unknown;\n}\n\nclass ReferenceImpl<T = unknown> implements Reference<T> {\n [REFERENCE]: ReferenceType;\n public tag: Nullable<Tag> = null;\n public lastRevision: Revision = INITIAL;\n public lastValue?: T;\n\n public children: Nullable<Map<string | Reference, Reference>> = null;\n\n public compute: Nullable<() => T> = null;\n public update: Nullable<(val: T) => void> = null;\n\n public debugLabel?: string;\n\n constructor(type: ReferenceType) {\n this[REFERENCE] = type;\n }\n}\n\nexport function createPrimitiveRef<T extends string | symbol | number | boolean | null | undefined>(\n value: T\n): Reference<T> {\n const ref = new ReferenceImpl<T>(UNBOUND);\n\n ref.tag = CONSTANT_TAG;\n ref.lastValue = value;\n\n if (DEBUG) {\n ref.debugLabel = String(value);\n }\n\n return ref;\n}\n\nexport const UNDEFINED_REFERENCE = createPrimitiveRef(undefined);\nexport const NULL_REFERENCE = createPrimitiveRef(null);\nexport const TRUE_REFERENCE = createPrimitiveRef(true as const);\nexport const FALSE_REFERENCE = createPrimitiveRef(false as const);\n\nexport function createConstRef<T>(value: T, debugLabel: false | string): Reference<T> {\n const ref = new ReferenceImpl<T>(CONSTANT);\n\n ref.lastValue = value;\n ref.tag = CONSTANT_TAG;\n\n if (DEBUG) {\n ref.debugLabel = debugLabel as string;\n }\n\n return ref;\n}\n\nexport function createUnboundRef<T>(value: T, debugLabel: false | string): Reference<T> {\n const ref = new ReferenceImpl<T>(UNBOUND);\n\n ref.lastValue = value;\n ref.tag = CONSTANT_TAG;\n\n if (DEBUG) {\n ref.debugLabel = debugLabel as string;\n }\n\n return ref;\n}\n\nexport function createComputeRef<T = unknown>(\n compute: () => T,\n update: Nullable<(value: T) => void> = null,\n debugLabel: false | string = 'unknown'\n): Reference<T> {\n const ref = new ReferenceImpl<T>(COMPUTE);\n\n ref.compute = compute;\n ref.update = update;\n\n if (DEBUG) {\n ref.debugLabel = `(result of a \\`${debugLabel}\\` helper)`;\n }\n\n return ref;\n}\n\nexport function createReadOnlyRef(ref: Reference): Reference {\n if (!isUpdatableRef(ref)) return ref;\n\n return createComputeRef(() => valueForRef(ref), null, ref.debugLabel);\n}\n\nexport function isInvokableRef(ref: Reference) {\n return ref[REFERENCE] === INVOKABLE;\n}\n\nexport function createInvokableRef(inner: Reference): Reference {\n const ref = createComputeRef(\n () => valueForRef(inner),\n (value) => updateRef(inner, value)\n );\n ref.debugLabel = inner.debugLabel;\n ref[REFERENCE] = INVOKABLE;\n\n return ref;\n}\n\nexport function isConstRef(_ref: Reference) {\n const ref = _ref as ReferenceImpl;\n\n return ref.tag === CONSTANT_TAG;\n}\n\nexport function isUpdatableRef(_ref: Reference) {\n const ref = _ref as ReferenceImpl;\n\n return ref.update !== null;\n}\n\nexport function valueForRef<T>(_ref: Reference<T>): T {\n const ref = _ref as ReferenceImpl<T>;\n\n let { tag } = ref;\n\n if (tag === CONSTANT_TAG) {\n return ref.lastValue as T;\n }\n\n const { lastRevision } = ref;\n let lastValue;\n\n if (tag === null || !validateTag(tag, lastRevision)) {\n const { compute } = ref;\n\n const newTag = track(() => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme\n lastValue = ref.lastValue = compute!();\n }, DEBUG && ref.debugLabel);\n\n tag = ref.tag = newTag;\n\n ref.lastRevision = valueForTag(newTag);\n } else {\n lastValue = ref.lastValue;\n }\n\n consumeTag(tag);\n\n return lastValue as T;\n}\n\nexport function updateRef(_ref: Reference, value: unknown) {\n const ref = _ref as ReferenceImpl;\n\n const update = expect(ref.update, 'called update on a non-updatable reference');\n\n update(value);\n}\n\nexport function childRefFor(_parentRef: Reference, path: string): Reference {\n const parentRef = _parentRef as ReferenceImpl;\n\n const type = parentRef[REFERENCE];\n\n let children = parentRef.children;\n let child: Reference;\n\n if (children === null) {\n children = parentRef.children = new Map();\n } else {\n const next = children.get(path);\n\n if (next) return next;\n }\n\n if (type === UNBOUND) {\n const parent = valueForRef(parentRef);\n\n if (isDict(parent)) {\n child = createUnboundRef(\n (parent as Record<string, unknown>)[path],\n DEBUG && `${parentRef.debugLabel}.${path}`\n );\n } else {\n child = UNDEFINED_REFERENCE;\n }\n } else {\n child = createComputeRef(\n () => {\n const parent = valueForRef(parentRef);\n\n if (isDict(parent)) {\n return getProp(parent, path);\n }\n },\n (val) => {\n const parent = valueForRef(parentRef);\n\n if (isDict(parent)) {\n return setProp(parent, path, val);\n }\n }\n );\n\n if (DEBUG) {\n child.debugLabel = `${parentRef.debugLabel}.${path}`;\n }\n }\n\n children.set(path, child);\n\n return child;\n}\n\nexport function childRefFromParts(root: Reference, parts: string[]): Reference {\n let reference = root;\n\n for (const part of parts) {\n reference = childRefFor(reference, part);\n }\n\n return reference;\n}\n\nexport let createDebugAliasRef: undefined | ((debugLabel: string, inner: Reference) => Reference);\n\nif (DEBUG) {\n createDebugAliasRef = (debugLabel: string, inner: Reference) => {\n const update = isUpdatableRef(inner) ? (value: unknown): void => updateRef(inner, value) : null;\n const ref = createComputeRef(() => valueForRef(inner), update);\n\n ref[REFERENCE] = inner[REFERENCE];\n\n ref.debugLabel = debugLabel;\n\n return ref;\n };\n}\n","import type { CurriedType, PresentArray } from '@glimmer/interfaces';\nimport type {\n ASTv2,\n BlockSymbolTable,\n ProgramSymbolTable,\n SourceSlice,\n SymbolTable,\n} from '@glimmer/syntax';\nimport { node } from '@glimmer/syntax';\n\nimport type { AnyOptionalList, OptionalList, PresentList } from '../../shared/list';\n\nexport class Template extends node('Template').fields<{\n scope: ProgramSymbolTable;\n body: Statement[];\n}>() {}\n\nexport class InElement extends node('InElement').fields<{\n guid: string;\n insertBefore: ExpressionNode | Missing;\n destination: ExpressionNode;\n block: NamedBlock;\n}>() {}\n\nexport class Not extends node('Not').fields<{ value: ExpressionNode }>() {}\n\nexport class If extends node('If').fields<{\n condition: ExpressionNode;\n block: NamedBlock;\n inverse: NamedBlock | null;\n}>() {}\n\nexport class IfInline extends node('IfInline').fields<{\n condition: ExpressionNode;\n truthy: ExpressionNode;\n falsy: ExpressionNode | null;\n}>() {}\n\nexport class Each extends node('Each').fields<{\n value: ExpressionNode;\n key: ExpressionNode | null;\n block: NamedBlock;\n inverse: NamedBlock | null;\n}>() {}\n\nexport class Let extends node('Let').fields<{\n positional: Positional;\n block: NamedBlock;\n}>() {}\n\nexport class WithDynamicVars extends node('WithDynamicVars').fields<{\n named: NamedArguments;\n block: NamedBlock;\n}>() {}\n\nexport class GetDynamicVar extends node('GetDynamicVar').fields<{\n name: ExpressionNode;\n}>() {}\n\nexport class Log extends node('Log').fields<{\n positional: Positional;\n}>() {}\n\nexport class InvokeComponent extends node('InvokeComponent').fields<{\n definition: ExpressionNode;\n args: Args;\n blocks: NamedBlocks | null;\n}>() {}\n\nexport class NamedBlocks extends node('NamedBlocks').fields<{\n blocks: OptionalList<NamedBlock>;\n}>() {}\n\nexport class NamedBlock extends node('NamedBlock').fields<{\n scope: BlockSymbolTable;\n name: SourceSlice;\n body: Statement[];\n}>() {}\nexport class AppendTrustedHTML extends node('AppendTrustedHTML').fields<{\n html: ExpressionNode;\n}>() {}\nexport class AppendTextNode extends node('AppendTextNode').fields<{ text: ExpressionNode }>() {}\nexport class AppendComment extends node('AppendComment').fields<{ value: SourceSlice }>() {}\n\nexport class Component extends node('Component').fields<{\n tag: ExpressionNode;\n params: ElementParameters;\n args: NamedArguments;\n blocks: NamedBlocks;\n}>() {}\n\nexport interface AttrKind {\n // triple-curly\n trusting: boolean;\n // this attribute is on an element with component features:\n // - <CapCase ...>\n // - modifiers\n // - <dynamic.tag ...>\n component: boolean;\n}\n\nexport class StaticAttr extends node('StaticAttr').fields<{\n kind: { component: boolean };\n name: SourceSlice;\n value: SourceSlice;\n namespace?: string | undefined;\n}>() {}\n\nexport class DynamicAttr extends node('DynamicAttr').fields<{\n kind: AttrKind;\n name: SourceSlice;\n value: ExpressionNode;\n namespace?: string | undefined;\n}>() {}\n\nexport class SimpleElement extends node('SimpleElement').fields<{\n tag: SourceSlice;\n params: ElementParameters;\n body: Statement[];\n dynamicFeatures: boolean;\n}>() {}\n\nexport class ElementParameters extends node('ElementParameters').fields<{\n body: AnyOptionalList<ElementParameter>;\n}>() {}\n\nexport class Yield extends node('Yield').fields<{\n target: SourceSlice;\n to: number;\n positional: Positional;\n}>() {}\nexport class Debugger extends node('Debugger').fields<{ scope: SymbolTable }>() {}\n\nexport class CallExpression extends node('CallExpression').fields<{\n callee: ExpressionNode;\n args: Args;\n}>() {}\n\nexport class Modifier extends node('Modifier').fields<{ callee: ExpressionNode; args: Args }>() {}\nexport class InvokeBlock extends node('InvokeBlock').fields<{\n head: ExpressionNode;\n args: Args;\n blocks: NamedBlocks;\n}>() {}\nexport class SplatAttr extends node('SplatAttr').fields<{ symbol: number }>() {}\nexport class PathExpression extends node('PathExpression').fields<{\n head: ExpressionNode;\n tail: Tail;\n}>() {}\n\nexport class Missing extends node('Missing').fields() {}\nexport class InterpolateExpression extends node('InterpolateExpression').fields<{\n parts: PresentList<ExpressionNode>;\n}>() {}\nexport class HasBlock extends node('HasBlock').fields<{ target: SourceSlice; symbol: number }>() {}\nexport class HasBlockParams extends node('HasBlockParams').fields<{\n target: SourceSlice;\n symbol: number;\n}>() {}\nexport class Curry extends node('Curry').fields<{\n definition: ExpressionNode;\n curriedType: CurriedType;\n args: Args;\n}>() {}\nexport class Positional extends node('Positional').fields<{\n list: OptionalList<ExpressionNode>;\n}>() {}\nexport class NamedArguments extends node('NamedArguments').fields<{\n entries: OptionalList<NamedArgument>;\n}>() {}\nexport class NamedArgument extends node('NamedArgument').fields<{\n key: SourceSlice;\n value: ExpressionNode;\n}>() {}\nexport class Args extends node('Args').fields<{\n positional: Positional;\n named: NamedArguments;\n}>() {}\nexport class Tail extends node('Tail').fields<{ members: PresentArray<SourceSlice> }>() {}\n\nexport type ExpressionNode =\n | ASTv2.LiteralExpression\n | ASTv2.KeywordExpression\n | ASTv2.VariableReference\n | Missing\n | PathExpression\n | InterpolateExpression\n | CallExpression\n | Not\n | IfInline\n | HasBlock\n | HasBlockParams\n | Curry\n | GetDynamicVar\n | Log;\n\nexport type ElementParameter = StaticAttr | DynamicAttr | Modifier | SplatAttr;\n\nexport type Internal =\n | Args\n | Positional\n | NamedArguments\n | NamedArgument\n | Tail\n | NamedBlock\n | NamedBlocks\n | ElementParameters;\nexport type ExprLike = ExpressionNode | Internal;\nexport type Statement =\n | InElement\n | Debugger\n | Yield\n | AppendTrustedHTML\n | AppendTextNode\n | Component\n | SimpleElement\n | InvokeBlock\n | AppendComment\n | If\n | Each\n | Let\n | WithDynamicVars\n | InvokeComponent;\n","import type { Nullable, PresentArray } from '@glimmer/interfaces';\nimport { isPresentArray, mapPresentArray } from '@glimmer/debug-util';\n\nexport interface OptionalList<T> {\n map<U>(callback: (input: T) => U): MapList<T, U, AnyOptionalList<T>>;\n filter<S extends T>(\n predicate: (value: T, index: number, array: T[]) => value is S\n ): AnyOptionalList<S>;\n toArray(): T[];\n toPresentArray(): Nullable<PresentArray<T>>;\n into<U, V>(options: { ifPresent: (array: PresentList<T>) => U; ifEmpty: () => V }): U | V;\n}\n\nexport class PresentList<T> implements OptionalList<T> {\n constructor(readonly list: PresentArray<T>) {}\n\n toArray(): PresentArray<T> {\n return this.list;\n }\n\n map<U>(callback: (input: T) => U): MapList<T, U, PresentList<T>> {\n let result = mapPresentArray(this.list, callback);\n return new PresentList(result) as MapList<T, U, this>;\n }\n\n filter<S extends T>(predicate: (value: T) => value is S): AnyOptionalList<S> {\n let out: S[] = [];\n\n for (let item of this.list) {\n if (predicate(item)) {\n out.push(item);\n }\n }\n\n return OptionalList(out);\n }\n\n toPresentArray(): PresentArray<T> {\n return this.list;\n }\n\n into<U, V>({ ifPresent }: { ifPresent: (array: PresentList<T>) => U; ifEmpty: () => V }): U | V {\n return ifPresent(this);\n }\n}\n\nexport class EmptyList<T> implements OptionalList<T> {\n readonly list: T[] = [];\n\n map<U>(_callback: (input: T) => U): MapList<T, U, EmptyList<T>> {\n return new EmptyList() as MapList<T, U, this>;\n }\n\n filter<S extends T>(_predicate: (value: T) => value is S): AnyOptionalList<S> {\n return new EmptyList();\n }\n\n toArray(): T[] {\n return this.list;\n }\n\n toPresentArray(): Nullable<PresentArray<T>> {\n return null;\n }\n\n into<U, V>({ ifEmpty }: { ifPresent: (array: PresentList<T>) => U; ifEmpty: () => V }): U | V {\n return ifEmpty();\n }\n}\n\n// export type OptionalList<T> = PresentList<T> | EmptyList<T>;\n\nexport function OptionalList<T>(value: readonly T[]): AnyOptionalList<T> {\n if (isPresentArray(value)) {\n return new PresentList(value);\n } else {\n return new EmptyList<T>();\n }\n}\n\nexport type AnyOptionalList<T> = (PresentList<T> | EmptyList<T>) & OptionalList<T>;\n\nexport type MapList<T, U, L extends OptionalList<T>> =\n L extends PresentList<T> ? PresentList<U> : L extends EmptyList<T> ? EmptyList<U> : never;\n","import type { GlimmerSyntaxError } from '@glimmer/syntax';\n\nimport type { AnyOptionalList } from './list';\n\nimport { OptionalList } from './list';\n\nabstract class ResultImpl<T> {\n static all<T extends Result<unknown>[]>(...results: T): MapAll<T> {\n let out: unknown[] = [];\n\n for (let result of results) {\n if (result.isErr) {\n return result.cast();\n } else {\n out.push(result.value);\n }\n }\n\n return Ok(out as MapAllOk<T>);\n }\n\n abstract mapOk<U>(callback: (value: T) => U): Result<U>;\n abstract readonly isOk: boolean;\n abstract readonly isErr: boolean;\n}\n\nexport const Result = ResultImpl;\n\nclass OkImpl<T> extends ResultImpl<T> {\n readonly isOk = true;\n readonly isErr = false;\n\n constructor(readonly value: T) {\n super();\n }\n\n expect(_message?: string): T {\n return this.value;\n }\n\n ifOk(callback: (value: T) => void): this {\n callback(this.value);\n return this;\n }\n\n andThen<U>(callback: (value: T) => Result<U>): Result<U> {\n return callback(this.value);\n }\n\n mapOk<U>(callback: (value: T) => U): Result<U> {\n return Ok(callback(this.value));\n }\n\n ifErr(_callback: (value: GlimmerSyntaxError) => void): this {\n return this;\n }\n\n mapErr(_callback: (value: GlimmerSyntaxError) => GlimmerSyntaxError): Result<T> {\n return this;\n }\n}\n\nclass ErrImpl<T> extends ResultImpl<T> {\n readonly isOk = false;\n readonly isErr = true;\n\n constructor(readonly reason: GlimmerSyntaxError) {\n super();\n }\n\n expect(message?: string): T {\n throw new Error(message || 'expected an Ok, got Err');\n }\n\n andThen<U>(_callback: (value: T) => Result<U>): Result<U> {\n return this.cast<U>();\n }\n\n mapOk<U>(_callback: (value: T) => U): Result<U> {\n return this.cast<U>();\n }\n\n ifOk(_callback: (value: T) => void): this {\n return this;\n }\n\n mapErr(callback: (value: GlimmerSyntaxError) => GlimmerSyntaxError): Result<T> {\n return Err(callback(this.reason));\n }\n\n ifErr(callback: (value: GlimmerSyntaxError) => void): this {\n callback(this.reason);\n return this;\n }\n\n cast<U>(): Result<U> {\n return this as unknown as Result<U>;\n }\n}\n\nexport function isResult<T>(input: MaybeResult<T>): input is Result<T> {\n return input instanceof ResultImpl;\n}\n\nexport function intoResult<T>(input: MaybeResult<T>): Result<T> {\n if (isResult(input)) {\n return input;\n } else {\n return Ok(input);\n }\n}\n\nexport type Result<T> = OkImpl<T> | ErrImpl<T>;\n\ntype MapAllOk<T extends Result<unknown>[]> = {\n [P in keyof T]: T[P] extends Result<infer Inner> ? Inner : never;\n};\n\ntype MapAll<T extends Result<unknown>[]> = Result<MapAllOk<T>>;\n\nexport function Ok<T>(value: T): Result<T> {\n return new OkImpl(value);\n}\n\nexport type Ok<T> = OkImpl<T>;\n\nexport function Err<T>(reason: GlimmerSyntaxError): Result<T> {\n return new ErrImpl(reason);\n}\n\nexport type Err<T> = ErrImpl<T>;\n\nexport type MaybeResult<T> = T | Result<T>;\n\nexport class MapIntoResultArray<T> {\n constructor(private items: T[]) {}\n\n map<U>(mapper: (item: T) => Result<U>): Result<U[]> {\n let out = new ResultArray<U>();\n\n for (let item of this.items) {\n out.add(mapper(item));\n }\n\n return out.toArray();\n }\n}\n\nexport class ResultArray<T> {\n constructor(private items: Result<T>[] = []) {}\n\n add(item: Result<T>): void {\n this.items.push(item);\n }\n\n toArray(): Result<T[]> {\n let err = this.items.filter((item): item is ErrImpl<T> => item instanceof ErrImpl)[0];\n\n if (err !== undefined) {\n return err.cast<T[]>();\n } else {\n return Ok((this.items as OkImpl<T>[]).map((item) => item.value));\n }\n }\n\n toOptionalList(): Result<AnyOptionalList<T>> {\n return this.toArray().mapOk((arr) => OptionalList(arr));\n }\n}\n","import type { PresentArray } from '@glimmer/interfaces';\nimport { getLast, isPresentArray } from '@glimmer/debug-util';\nimport { ASTv2, KEYWORDS_TYPES } from '@glimmer/syntax';\n\nimport type { AnyOptionalList, PresentList } from '../../../shared/list';\nimport type { NormalizationState } from '../context';\n\nimport { Ok, Result, ResultArray } from '../../../shared/result';\nimport * as mir from '../../2-encoding/mir';\nimport { CALL_KEYWORDS } from '../keywords';\n\nexport class NormalizeExpressions {\n visit(node: ASTv2.ExpressionNode, state: NormalizationState): Result<mir.ExpressionNode> {\n switch (node.type) {\n case 'Literal':\n return Ok(this.Literal(node));\n case 'Keyword':\n return Ok(this.Keyword(node));\n case 'Interpolate':\n return this.Interpolate(node, state);\n case 'Path':\n return this.PathExpression(node);\n case 'Call': {\n let translated = CALL_KEYWORDS.translate(node, state);\n\n if (translated !== null) {\n return translated;\n }\n\n return this.CallExpression(node, state);\n }\n }\n }\n\n visitList(\n nodes: PresentArray<ASTv2.ExpressionNode>,\n state: NormalizationState\n ): Result<PresentList<mir.ExpressionNode>>;\n visitList(\n nodes: readonly ASTv2.ExpressionNode[],\n state: NormalizationState\n ): Result<AnyOptionalList<mir.ExpressionNode>>;\n visitList(\n nodes: readonly ASTv2.ExpressionNode[],\n state: NormalizationState\n ): Result<AnyOptionalList<mir.ExpressionNode>> {\n return new ResultArray(nodes.map((e) => VISIT_EXPRS.visit(e, state))).toOptionalList();\n }\n\n /**\n * Normalize paths into `hir.Path` or a `hir.Expr` that corresponds to the ref.\n *\n * TODO since keywords don't support tails anyway, distinguish PathExpression from\n * VariableReference in ASTv2.\n */\n PathExpression(path: ASTv2.PathExpression): Result<mir.ExpressionNode> {\n let ref = this.VariableReference(path.ref);\n let { tail } = path;\n\n if (isPresentArray(tail)) {\n let tailLoc = tail[0].loc.extend(getLast(tail).loc);\n return Ok(\n new mir.PathExpression({\n loc: path.loc,\n head: ref,\n tail: new mir.Tail({ loc: tailLoc, members: tail }),\n })\n );\n } else {\n return Ok(ref);\n }\n }\n\n VariableReference(ref: ASTv2.VariableReference): ASTv2.VariableReference {\n return ref;\n }\n\n Literal(literal: ASTv2.LiteralExpression): ASTv2.LiteralExpression {\n return literal;\n }\n\n Keyword(keyword: ASTv2.KeywordExpression): ASTv2.KeywordExpression {\n return keyword;\n }\n\n Interpolate(\n expr: ASTv2.InterpolateExpression,\n state: NormalizationState\n ): Result<mir.InterpolateExpression> {\n let parts = expr.parts.map(convertPathToCallIfKeyword) as PresentArray<ASTv2.ExpressionNode>;\n\n return VISIT_EXPRS.visitList(parts, state).mapOk(\n (parts) => new mir.InterpolateExpression({ loc: expr.loc, parts: parts })\n );\n }\n\n CallExpression(\n expr: ASTv2.CallExpression,\n state: NormalizationState\n ): Result<mir.ExpressionNode> {\n if (expr.callee.type === 'Call') {\n throw new Error(`unimplemented: subexpression at the head of a subexpression`);\n } else {\n return Result.all(\n VISIT_EXPRS.visit(expr.callee, state),\n VISIT_EXPRS.Args(expr.args, state)\n ).mapOk(\n ([callee, args]) =>\n new mir.CallExpression({\n loc: expr.loc,\n callee,\n args,\n })\n );\n }\n }\n\n Args({ positional, named, loc }: ASTv2.Args, state: NormalizationState): Result<mir.Args> {\n return Result.all(this.Positional(positional, state), this.NamedArguments(named, state)).mapOk(\n ([positional, named]) =>\n new mir.Args({\n loc,\n positional,\n named,\n })\n );\n }\n\n Positional(\n positional: ASTv2.PositionalArguments,\n state: NormalizationState\n ): Result<mir.Positional> {\n return VISIT_EXPRS.visitList(positional.exprs, state).mapOk(\n (list) =>\n new mir.Positional({\n loc: positional.loc,\n list,\n })\n );\n }\n\n NamedArguments(\n named: ASTv2.NamedArguments,\n state: NormalizationState\n ): Result<mir.NamedArguments> {\n let pairs = named.entries.map((arg) => {\n let value = convertPathToCallIfKeyword(arg.value);\n\n return VISIT_EXPRS.visit(value, state).mapOk(\n (value) =>\n new mir.NamedArgument({\n loc: arg.loc,\n key: arg.name,\n value,\n })\n );\n });\n\n return new ResultArray(pairs)\n .toOptionalList()\n .mapOk((pairs) => new mir.NamedArguments({ loc: named.loc, entries: pairs }));\n }\n}\n\nexport function convertPathToCallIfKeyword(path: ASTv2.ExpressionNode): ASTv2.ExpressionNode {\n if (path.type === 'Path' && path.ref.type === 'Free' && path.ref.name in KEYWORDS_TYPES) {\n return new ASTv2.CallExpression({\n callee: path,\n args: ASTv2.Args.empty(path.loc),\n loc: path.loc,\n });\n }\n\n return path;\n}\n\nexport const VISIT_EXPRS = new NormalizeExpressions();\n","import type { ASTv2, KeywordType } from '@glimmer/syntax';\nimport { exhausted } from '@glimmer/debug-util';\nimport { generateSyntaxError, isKeyword, KEYWORDS_TYPES } from '@glimmer/syntax';\n\nimport type { Result } from '../../../shared/result';\nimport type { NormalizationState } from '../context';\n\nimport { Err } from '../../../shared/result';\n\nexport interface KeywordDelegate<Match extends KeywordMatch, V, Out> {\n assert: (options: Match, state: NormalizationState) => Result<V>;\n translate: (options: { node: Match; state: NormalizationState }, param: V) => Result<Out>;\n}\n\nexport interface Keyword<K extends KeywordType = KeywordType, Out = unknown> {\n translate(node: KeywordCandidates[K], state: NormalizationState): Result<Out> | null;\n}\n\nexport interface BlockKeyword<Out = unknown> {\n translate(node: ASTv2.InvokeBlock, state: NormalizationState): Result<Out> | null;\n}\n\nclass KeywordImpl<\n K extends KeywordType,\n S extends string = string,\n Param = unknown,\n Out = unknown,\n> {\n protected types: Set<KeywordCandidates[K]['type']>;\n\n constructor(\n protected keyword: S,\n type: KeywordType,\n private delegate: KeywordDelegate<KeywordMatches[K], Param, Out>\n ) {\n let nodes = new Set<KeywordNode['type']>();\n for (let nodeType of KEYWORD_NODES[type]) {\n nodes.add(nodeType);\n }\n\n this.types = nodes;\n }\n\n protected match(node: KeywordCandidates[K]): node is KeywordMatches[K] {\n if (!this.types.has(node.type)) {\n return false;\n }\n\n let path = getCalleeExpression(node);\n\n if (path !== null && path.type === 'Path' && path.ref.type === 'Free') {\n return path.ref.name === this.keyword;\n } else {\n return false;\n }\n }\n\n translate(node: KeywordMatches[K], state: NormalizationState): Result<Out> | null {\n if (this.match(node)) {\n let path = getCalleeExpression(node);\n\n if (path !== null && path.type === 'Path' && path.tail.length > 0) {\n return Err(\n generateSyntaxError(\n `The \\`${\n this.keyword\n }\\` keyword was used incorrectly. It was used as \\`${path.loc.asString()}\\`, but it cannot be used with additional path segments. \\n\\nError caused by`,\n node.loc\n )\n );\n }\n\n let param = this.delegate.assert(node, state);\n return param.andThen((param) => this.delegate.translate({ node, state }, param));\n } else {\n return null;\n }\n }\n}\n\nexport const KEYWORD_NODES = {\n Call: ['Call'],\n Block: ['InvokeBlock'],\n Append: ['AppendContent'],\n Modifier: ['ElementModifier'],\n} as const;\n\nexport interface KeywordCandidates {\n Call: ASTv2.ExpressionNode;\n Block: ASTv2.InvokeBlock;\n Append: ASTv2.AppendContent;\n Modifier: ASTv2.ElementModifier;\n}\n\nexport type KeywordCandidate = KeywordCandidates[keyof KeywordCandidates];\n\nexport interface KeywordMatches {\n Call: ASTv2.CallExpression;\n Block: ASTv2.InvokeBlock;\n Append: ASTv2.AppendContent;\n Modifier: ASTv2.ElementModifier;\n}\n\nexport type KeywordMatch = KeywordMatches[keyof KeywordMatches];\n\n/**\n * A \"generic\" keyword is something like `has-block`, which makes sense in the context\n * of sub-expression or append\n */\nexport type GenericKeywordNode = ASTv2.AppendContent | ASTv2.CallExpression;\n\nexport type KeywordNode =\n | GenericKeywordNode\n | ASTv2.CallExpression\n | ASTv2.InvokeBlock\n | ASTv2.ElementModifier;\n\nexport type PossibleKeyword = KeywordNode;\ntype OutFor<K extends Keyword | BlockKeyword> =\n K extends BlockKeyword<infer Out> ? Out : K extends Keyword<KeywordType, infer Out> ? Out : never;\n\nfunction getCalleeExpression(\n node: KeywordNode | ASTv2.ExpressionNode\n): ASTv2.ExpressionNode | null {\n switch (node.type) {\n // This covers the inside of attributes and expressions, as well as the callee\n // of call nodes\n case 'Path':\n return node;\n case 'AppendContent':\n return getCalleeExpression(node.value);\n case 'Call':\n case 'InvokeBlock':\n case 'ElementModifier':\n return node.callee;\n default:\n return null;\n }\n}\n\nexport class Keywords<\n K extends KeywordType,\n KeywordList extends Keyword<K> = never,\n> implements Keyword<K, OutFor<KeywordList>> {\n _keywords: Keyword[] = [];\n _type: K;\n\n constructor(type: K) {\n this._type = type;\n }\n\n kw<V, S extends string = string, Out = unknown>(\n name: S,\n delegate: KeywordDelegate<KeywordMatches[K], V, Out>\n ): this {\n this._keywords.push(new KeywordImpl(name, this._type, delegate));\n\n return this;\n }\n\n translate(\n node: KeywordCandidates[K],\n state: NormalizationState\n ): Result<OutFor<KeywordList>> | null {\n for (let keyword of this._keywords) {\n let result = keyword.translate(node, state);\n if (result !== null) {\n return result as Result<OutFor<KeywordList>>;\n }\n }\n\n let path = getCalleeExpression(node);\n\n if (path && path.type === 'Path' && path.ref.type === 'Free' && isKeyword(path.ref.name)) {\n let { name } = path.ref as { name: keyof typeof KEYWORDS_TYPES };\n\n let usedType = this._type;\n let validTypes: readonly KeywordType[] = KEYWORDS_TYPES[name];\n\n if (!validTypes.includes(usedType)) {\n return Err(\n generateSyntaxError(\n `The \\`${name}\\` keyword was used incorrectly. It was used as ${\n typesToReadableName[usedType]\n }, but its valid usages are:\\n\\n${generateTypesMessage(\n name,\n validTypes\n )}\\n\\nError caused by`,\n node.loc\n )\n );\n }\n }\n\n return null;\n }\n}\n\nconst typesToReadableName = {\n Append: 'an append statement',\n Block: 'a block statement',\n Call: 'a call expression',\n Modifier: 'a modifier',\n};\n\nfunction generateTypesMessage(name: string, types: readonly KeywordType[]): string {\n return types\n .map((type) => {\n switch (type) {\n case 'Append':\n return `- As an append statement, as in: {{${name}}}`;\n case 'Block':\n return `- As a block statement, as in: {{#${name}}}{{/${name}}}`;\n case 'Call':\n return `- As an expression, as in: (${name})`;\n case 'Modifier':\n return `- As a modifier, as in: <div {{${name}}}></div>`;\n default:\n return exhausted(type);\n }\n })\n .join('\\n\\n');\n}\n\n/**\n * This function builds keyword definitions for a particular type of AST node (`KeywordType`).\n *\n * You can build keyword definitions for:\n *\n * - `Expr`: A `SubExpression` or `PathExpression`\n * - `Block`: A `BlockStatement`\n * - A `BlockStatement` is a keyword candidate if its head is a\n * `PathExpression`\n * - `Append`: An `AppendStatement`\n *\n * A node is a keyword candidate if:\n *\n * - A `PathExpression` is a keyword candidate if it has no tail, and its\n * head expression is a `LocalVarHead` or `FreeVarHead` whose name is\n * the keyword's name.\n * - A `SubExpression`, `AppendStatement`, or `BlockStatement` is a keyword\n * candidate if its head is a keyword candidate.\n *\n * The keyword infrastructure guarantees that:\n *\n * - If a node is not a keyword candidate, it is never passed to any keyword's\n * `assert` method.\n * - If a node is not the `KeywordType` for a particular keyword, it will not\n * be passed to the keyword's `assert` method.\n *\n * `Expr` keywords are used in expression positions and should return HIR\n * expressions. `Block` and `Append` keywords are used in statement\n * positions and should return HIR statements.\n *\n * A keyword definition has two parts:\n *\n * - `match`, which determines whether an AST node matches the keyword, and can\n * optionally return some information extracted from the AST node.\n * - `translate`, which takes a matching AST node as well as the extracted\n * information and returns an appropriate HIR instruction.\n *\n * # Example\n *\n * This keyword:\n *\n * - turns `(hello)` into `\"hello\"`\n * - as long as `hello` is not in scope\n * - makes it an error to pass any arguments (such as `(hello world)`)\n *\n * ```ts\n * keywords('SubExpr').kw('hello', {\n * assert(node: ExprKeywordNode): Result<void> | false {\n * // we don't want to transform `hello` as a `PathExpression`\n * if (node.type !== 'SubExpression') {\n * return false;\n * }\n *\n * // node.head would be `LocalVarHead` if `hello` was in scope\n * if (node.head.type !== 'FreeVarHead') {\n * return false;\n * }\n *\n * if (node.params.length || node.hash) {\n * return Err(generateSyntaxError(`(hello) does not take any arguments`), node.loc);\n * } else {\n * return Ok();\n * }\n * },\n *\n * translate(node: ASTv2.SubExpression): hir.Expression {\n * return ASTv2.builders.literal(\"hello\", node.loc)\n * }\n * })\n * ```\n *\n * The keyword infrastructure checks to make sure that the node is the right\n * type before calling `assert`, so you only need to consider `SubExpression`\n * and `PathExpression` here. It also checks to make sure that the node passed\n * to `assert` has the keyword name in the right place.\n *\n * Note the important difference between returning `false` from `assert`,\n * which just means that the node didn't match, and returning `Err`, which\n * means that the node matched, but there was a keyword-specific syntax\n * error.\n */\nexport function keywords<K extends KeywordType>(type: K): Keywords<K> {\n return new Keywords(type);\n}\n","import type { Result } from '../../../../shared/result';\nimport type { NormalizationState } from '../../context';\nimport type { GenericKeywordNode, KeywordDelegate } from '../impl';\n\nimport * as mir from '../../../2-encoding/mir';\n\nexport function toAppend<T>({\n assert,\n translate,\n}: KeywordDelegate<GenericKeywordNode, T, mir.ExpressionNode>): KeywordDelegate<\n GenericKeywordNode,\n T,\n mir.AppendTextNode\n> {\n return {\n assert,\n translate(\n { node, state }: { node: GenericKeywordNode; state: NormalizationState },\n value: T\n ): Result<mir.AppendTextNode> {\n let result = translate({ node, state }, value);\n\n return result.mapOk((text) => new mir.AppendTextNode({ text, loc: node.loc }));\n },\n };\n}\n","import type { CurriedType } from '@glimmer/interfaces';\nimport { CURRIED_COMPONENT, CURRIED_HELPER, CURRIED_MODIFIER } from '@glimmer/constants';\nimport { ASTv2, generateSyntaxError } from '@glimmer/syntax';\n\nimport type { NormalizationState } from '../../context';\nimport type { KeywordDelegate } from '../impl';\n\nimport { Err, Ok, Result } from '../../../../shared/result';\nimport * as mir from '../../../2-encoding/mir';\nimport { VISIT_EXPRS } from '../../visitors/expressions';\n\nconst CurriedTypeToReadableType = {\n [CURRIED_COMPONENT]: 'component',\n [CURRIED_HELPER]: 'helper',\n [CURRIED_MODIFIER]: 'modifier',\n} as const;\n\nexport function assertCurryKeyword(curriedType: CurriedType) {\n return (\n node: ASTv2.AppendContent | ASTv2.InvokeBlock | ASTv2.CallExpression,\n state: NormalizationState\n ): Result<{\n definition: ASTv2.ExpressionNode;\n args: ASTv2.Args;\n }> => {\n let readableType = CurriedTypeToReadableType[curriedType];\n let stringsAllowed = curriedType === CURRIED_COMPONENT;\n\n let { args } = node;\n\n let definition = args.nth(0);\n\n if (definition === null) {\n return Err(\n generateSyntaxError(\n `(${readableType}) requires a ${readableType} definition or identifier as its first positional parameter, did not receive any parameters.`,\n args.loc\n )\n );\n }\n\n if (definition.type === 'Literal') {\n if (stringsAllowed && state.isStrict) {\n return Err(\n generateSyntaxError(\n `(${readableType}) cannot resolve string values in strict mode templates`,\n node.loc\n )\n );\n } else if (!stringsAllowed) {\n return Err(\n generateSyntaxError(\n `(${readableType}) cannot resolve string values, you must pass a ${readableType} definition directly`,\n node.loc\n )\n );\n }\n }\n\n args = new ASTv2.Args({\n positional: new ASTv2.PositionalArguments({\n exprs: args.positional.exprs.slice(1),\n loc: args.positional.loc,\n }),\n named: args.named,\n loc: args.loc,\n });\n\n return Ok({ definition, args });\n };\n}\n\nfunction translateCurryKeyword(curriedType: CurriedType) {\n return (\n {\n node,\n state,\n }: { node: ASTv2.CallExpression | ASTv2.AppendContent; state: NormalizationState },\n { definition, args }: { definition: ASTv2.ExpressionNode; args: ASTv2.Args }\n ): Result<mir.Curry> => {\n let definitionResult = VISIT_EXPRS.visit(definition, state);\n let argsResult = VISIT_EXPRS.Args(args, state);\n\n return Result.all(definitionResult, argsResult).mapOk(\n ([definition, args]) =>\n new mir.Curry({\n loc: node.loc,\n curriedType,\n definition,\n args,\n })\n );\n };\n}\n\nexport function curryKeyword(\n curriedType: CurriedType\n): KeywordDelegate<\n ASTv2.CallExpression | ASTv2.AppendContent,\n { definition: ASTv2.ExpressionNode; args: ASTv2.Args },\n mir.Curry\n> {\n return {\n assert: assertCurryKeyword(curriedType),\n translate: translateCurryKeyword(curriedType),\n };\n}\n","import type { ASTv2 } from '@glimmer/syntax';\nimport { generateSyntaxError } from '@glimmer/syntax';\n\nimport type { Result } from '../../../../shared/result';\nimport type { NormalizationState } from '../../context';\nimport type { GenericKeywordNode, KeywordDelegate } from '../impl';\n\nimport { Err, Ok } from '../../../../shared/result';\nimport * as mir from '../../../2-encoding/mir';\nimport { VISIT_EXPRS } from '../../visitors/expressions';\n\nfunction assertGetDynamicVarKeyword(node: GenericKeywordNode): Result<ASTv2.ExpressionNode> {\n let call = node.type === 'AppendContent' ? node.value : node;\n\n let named = call.type === 'Call' ? call.args.named : null;\n let positionals = call.type === 'Call' ? call.args.positional : null;\n\n if (named && !named.isEmpty()) {\n return Err(\n generateSyntaxError(`(-get-dynamic-vars) does not take any named arguments`, node.loc)\n );\n }\n\n let varName = positionals?.nth(0);\n\n if (!varName) {\n return Err(generateSyntaxError(`(-get-dynamic-vars) requires a var name to get`, node.loc));\n }\n\n if (positionals && positionals.size > 1) {\n return Err(\n generateSyntaxError(`(-get-dynamic-vars) only receives one positional arg`, node.loc)\n );\n }\n\n return Ok(varName);\n}\n\nfunction translateGetDynamicVarKeyword(\n { node, state }: { node: GenericKeywordNode; state: NormalizationState },\n name: ASTv2.ExpressionNode\n): Result<mir.GetDynamicVar> {\n return VISIT_EXPRS.visit(name, state).mapOk(\n (name) => new mir.GetDynamicVar({ name, loc: node.loc })\n );\n}\n\nexport const getDynamicVarKeyword: KeywordDelegate<\n GenericKeywordNode,\n ASTv2.ExpressionNode,\n mir.GetDynamicVar\n> = {\n assert: assertGetDynamicVarKeyword,\n translate: translateGetDynamicVarKeyword,\n};\n","import { ASTv2, generateSyntaxError, SourceSlice } from '@glimmer/syntax';\n\nimport type { Result } from '../../../../shared/result';\nimport type { NormalizationState } from '../../context';\nimport type { GenericKeywordNode, KeywordDelegate } from '../impl';\n\nimport { Err, Ok } from '../../../../shared/result';\nimport * as mir from '../../../2-encoding/mir';\n\nfunction assertHasBlockKeyword(type: string) {\n return (node: GenericKeywordNode): Result<SourceSlice> => {\n let call = node.type === 'AppendContent' ? node.value : node;\n\n let named = call.type === 'Call' ? call.args.named : null;\n let positionals = call.type === 'Call' ? call.args.positional : null;\n\n if (named && !named.isEmpty()) {\n return Err(generateSyntaxError(`(${type}) does not take any named arguments`, call.loc));\n }\n\n if (!positionals || positionals.isEmpty()) {\n return Ok(SourceSlice.synthetic('default'));\n } else if (positionals.exprs.length === 1) {\n let positional = positionals.exprs[0] as ASTv2.ExpressionNode;\n if (ASTv2.isLiteral(positional, 'string')) {\n return Ok(positional.toSlice());\n } else {\n return Err(\n generateSyntaxError(\n `(${type}) can only receive a string literal as its first argument`,\n call.loc\n )\n );\n }\n } else {\n return Err(\n generateSyntaxError(`(${type}) only takes a single positional argument`, call.loc)\n );\n }\n };\n}\n\nfunction translateHasBlockKeyword(type: string) {\n return (\n {\n node,\n state: { scope },\n }: { node: ASTv2.CallExpression | ASTv2.AppendContent; state: NormalizationState },\n target: SourceSlice\n ): Result<mir.HasBlock | mir.HasBlockParams> => {\n let block =\n type === 'has-block'\n ? new mir.HasBlock({ loc: node.loc, target, symbol: scope.allocateBlock(target.chars) })\n : new mir.HasBlockParams({\n loc: node.loc,\n target,\n symbol: scope.allocateBlock(target.chars),\n });\n\n return Ok(block);\n };\n}\n\nexport function hasBlockKeyword(\n type: string\n): KeywordDelegate<\n ASTv2.CallExpression | ASTv2.AppendContent,\n SourceSlice,\n mir.HasBlock | mir.HasBlockParams\n> {\n return {\n assert: assertHasBlockKeyword(type),\n translate: translateHasBlockKeyword(type),\n };\n}\n","import type { ASTv2 } from '@glimmer/syntax';\nimport { generateSyntaxError } from '@glimmer/syntax';\n\nimport type { NormalizationState } from '../../context';\nimport type { KeywordDelegate } from '../impl';\n\nimport { Err, Ok, Result } from '../../../../shared/result';\nimport * as mir from '../../../2-encoding/mir';\nimport { VISIT_EXPRS } from '../../visitors/expressions';\n\nfunction assertIfUnlessInlineKeyword(type: string) {\n return (\n originalNode: ASTv2.AppendContent | ASTv2.ExpressionNode\n ): Result<{\n condition: ASTv2.ExpressionNode;\n truthy: ASTv2.ExpressionNode;\n falsy: ASTv2.ExpressionNode | null;\n }> => {\n let inverted = type === 'unless';\n\n let node = originalNode.type === 'AppendContent' ? originalNode.value : originalNode;\n let named = node.type === 'Call' ? node.args.named : null;\n let positional = node.type === 'Call' ? node.args.positional : null;\n\n if (named && !named.isEmpty()) {\n return Err(\n generateSyntaxError(\n `(${type}) cannot receive named parameters, received ${named.entries\n .map((e) => e.name.chars)\n .join(', ')}`,\n originalNode.loc\n )\n );\n }\n\n let condition = positional?.nth(0);\n\n if (!positional || !condition) {\n return Err(\n generateSyntaxError(\n `When used inline, (${type}) requires at least two parameters 1. the condition that determines the state of the (${type}), and 2. the value to return if the condition is ${\n inverted ? 'false' : 'true'\n }. Did not receive any parameters`,\n originalNode.loc\n )\n );\n }\n\n let truthy = positional.nth(1);\n let falsy = positional.nth(2);\n\n if (truthy === null) {\n return Err(\n generateSyntaxError(\n `When used inline, (${type}) requires at least two parameters 1. the condition that determines the state of the (${type}), and 2. the value to return if the condition is ${\n inverted ? 'false' : 'true'\n }. Received only one parameter, the condition`,\n originalNode.loc\n )\n );\n }\n\n if (positional.size > 3) {\n return Err(\n generateSyntaxError(\n `When used inline, (${type}) can receive a maximum of three positional parameters 1. the condition that determines the state of the (${type}), 2. the value to return if the condition is ${\n inverted ? 'false' : 'true'\n }, and 3. the value to return if the condition is ${\n inverted ? 'true' : 'false'\n }. Received ${positional.size} parameters`,\n originalNode.loc\n )\n );\n }\n\n return Ok({ condition, truthy, falsy });\n };\n}\n\nfunction translateIfUnlessInlineKeyword(type: string) {\n let inverted = type === 'unless';\n\n return (\n {\n node,\n state,\n }: { node: ASTv2.AppendContent | ASTv2.ExpressionNode; state: NormalizationState },\n {\n condition,\n truthy,\n falsy,\n }: {\n condition: ASTv2.ExpressionNode;\n truthy: ASTv2.ExpressionNode;\n falsy: ASTv2.ExpressionNode | null;\n }\n ): Result<mir.IfInline> => {\n let conditionResult = VISIT_EXPRS.visit(condition, state);\n let truthyResult = VISIT_EXPRS.visit(truthy, state);\n let falsyResult = falsy ? VISIT_EXPRS.visit(falsy, state) : Ok(null);\n\n return Result.all(conditionResult, truthyResult, falsyResult).mapOk(\n ([condition, truthy, falsy]) => {\n if (inverted) {\n condition = new mir.Not({ value: condition, loc: node.loc });\n }\n\n return new mir.IfInline({\n loc: node.loc,\n condition,\n truthy,\n falsy,\n });\n }\n );\n };\n}\n\nexport function ifUnlessInlineKeyword(type: string): KeywordDelegate<\n ASTv2.CallExpression | ASTv2.AppendContent,\n {\n condition: ASTv2.ExpressionNode;\n truthy: ASTv2.ExpressionNode;\n falsy: ASTv2.ExpressionNode | null;\n },\n mir.IfInline\n> {\n return {\n assert: assertIfUnlessInlineKeyword(type),\n translate: translateIfUnlessInlineKeyword(type),\n };\n}\n","import type { ASTv2 } from '@glimmer/syntax';\nimport { generateSyntaxError } from '@glimmer/syntax';\n\nimport type { Result } from '../../../../shared/result';\nimport type { NormalizationState } from '../../context';\nimport type { GenericKeywordNode, KeywordDelegate } from '../impl';\n\nimport { Err, Ok } from '../../../../shared/result';\nimport * as mir from '../../../2-encoding/mir';\nimport { VISIT_EXPRS } from '../../visitors/expressions';\n\nfunction assertLogKeyword(node: GenericKeywordNode): Result<ASTv2.PositionalArguments> {\n let {\n args: { named, positional },\n } = node;\n\n if (named.isEmpty()) {\n return Ok(positional);\n } else {\n return Err(generateSyntaxError(`(log) does not take any named arguments`, node.loc));\n }\n}\n\nfunction translateLogKeyword(\n { node, state }: { node: ASTv2.CallExpression | ASTv2.AppendContent; state: NormalizationState },\n positional: ASTv2.PositionalArguments\n): Result<mir.Log> {\n return VISIT_EXPRS.Positional(positional, state).mapOk(\n (positional) => new mir.Log({ positional, loc: node.loc })\n );\n}\n\nexport const logKeyword: KeywordDelegate<\n ASTv2.CallExpression | ASTv2.AppendContent,\n ASTv2.PositionalArguments,\n mir.Log\n> = {\n assert: assertLogKeyword,\n translate: translateLogKeyword,\n};\n","import { CURRIED_COMPONENT, CURRIED_HELPER } from '@glimmer/constants';\nimport { ASTv2, generateSyntaxError, src } from '@glimmer/syntax';\n\nimport type { NormalizationState } from '../context';\n\nimport { Err, Ok, Result } from '../../../shared/result';\nimport * as mir from '../../2-encoding/mir';\nimport { VISIT_EXPRS } from '../visitors/expressions';\nimport { keywords } from './impl';\nimport { toAppend } from './utils/call-to-append';\nimport { assertCurryKeyword } from './utils/curry';\nimport { getDynamicVarKeyword } from './utils/dynamic-vars';\nimport { hasBlockKeyword } from './utils/has-block';\nimport { ifUnlessInlineKeyword } from './utils/if-unless';\nimport { logKeyword } from './utils/log';\n\nexport const APPEND_KEYWORDS = keywords('Append')\n .kw('has-block', toAppend(hasBlockKeyword('has-block')))\n .kw('has-block-params', toAppend(hasBlockKeyword('has-block-params')))\n .kw('-get-dynamic-var', toAppend(getDynamicVarKeyword))\n .kw('log', toAppend(logKeyword))\n .kw('if', toAppend(ifUnlessInlineKeyword('if')))\n .kw('unless', toAppend(ifUnlessInlineKeyword('unless')))\n .kw('yield', {\n assert(node: ASTv2.AppendContent): Result<{\n target: src.SourceSlice;\n positional: ASTv2.PositionalArguments;\n }> {\n let { args } = node;\n\n if (args.named.isEmpty()) {\n return Ok({\n target: src.SourceSpan.synthetic('default').toSlice(),\n positional: args.positional,\n });\n } else {\n let target = args.named.get('to');\n\n if (args.named.size > 1 || target === null) {\n return Err(\n generateSyntaxError(`yield only takes a single named argument: 'to'`, args.named.loc)\n );\n }\n\n if (ASTv2.isLiteral(target, 'string')) {\n return Ok({ target: target.toSlice(), positional: args.positional });\n } else {\n return Err(\n generateSyntaxError(`you can only yield to a literal string value`, target.loc)\n );\n }\n }\n },\n\n translate(\n { node, state }: { node: ASTv2.AppendContent; state: NormalizationState },\n {\n target,\n positional,\n }: {\n target: src.SourceSlice;\n positional: ASTv2.PositionalArguments;\n }\n ): Result<mir.Statement> {\n return VISIT_EXPRS.Positional(positional, state).mapOk(\n (positional) =>\n new mir.Yield({\n loc: node.loc,\n target,\n to: state.scope.allocateBlock(target.chars),\n positional,\n })\n );\n },\n })\n .kw('debugger', {\n assert(node: ASTv2.AppendContent): Result<void> {\n let { args } = node;\n let { positional } = args;\n\n if (args.isEmpty()) {\n return Ok(undefined);\n } else {\n if (positional.isEmpty()) {\n return Err(generateSyntaxError(`debugger does not take any named arguments`, node.loc));\n } else {\n return Err(\n generateSyntaxError(`debugger does not take any positional arguments`, node.loc)\n );\n }\n }\n },\n\n translate({\n node,\n state: { scope },\n }: {\n node: ASTv2.AppendContent;\n state: NormalizationState;\n }): Result<mir.Statement> {\n return Ok(new mir.Debugger({ loc: node.loc, scope }));\n },\n })\n .kw('component', {\n assert: assertCurryKeyword(CURRIED_COMPONENT),\n\n translate(\n { node, state }: { node: ASTv2.AppendContent; state: NormalizationState },\n { definition, args }: { definition: ASTv2.ExpressionNode; args: ASTv2.Args }\n ): Result<mir.InvokeComponent> {\n let definitionResult = VISIT_EXPRS.visit(definition, state);\n let argsResult = VISIT_EXPRS.Args(args, state);\n\n return Result.all(definitionResult, argsResult).mapOk(\n ([definition, args]) =>\n new mir.InvokeComponent({\n loc: node.loc,\n definition,\n args,\n blocks: null,\n })\n );\n },\n })\n .kw('helper', {\n assert: assertCurryKeyword(CURRIED_HELPER),\n\n translate(\n { node, state }: { node: ASTv2.AppendContent; state: NormalizationState },\n { definition, args }: { definition: ASTv2.ExpressionNode; args: ASTv2.Args }\n ): Result<mir.AppendTextNode> {\n let definitionResult = VISIT_EXPRS.visit(definition, state);\n let argsResult = VISIT_EXPRS.Args(args, state);\n\n return Result.all(definitionResult, argsResult).mapOk(([definition, args]) => {\n let text = new mir.CallExpression({ callee: definition, args, loc: node.loc });\n\n return new mir.AppendTextNode({\n loc: node.loc,\n text,\n });\n });\n },\n });\n","import type { ASTv2 } from '@glimmer/syntax';\nimport { CURRIED_COMPONENT } from '@glimmer/constants';\nimport { generateSyntaxError } from '@glimmer/syntax';\n\nimport type { NormalizationState } from '../context';\n\nimport { Err, Ok, Result } from '../../../shared/result';\nimport * as mir from '../../2-encoding/mir';\nimport { VISIT_EXPRS } from '../visitors/expressions';\nimport { VISIT_STMTS } from '../visitors/statements';\nimport { keywords } from './impl';\nimport { assertCurryKeyword } from './utils/curry';\n\nexport const BLOCK_KEYWORDS = keywords('Block')\n .kw('in-element', {\n assert(node: ASTv2.InvokeBlock): Result<{\n insertBefore: ASTv2.ExpressionNode | null;\n destination: ASTv2.ExpressionNode;\n }> {\n let { args } = node;\n\n let guid = args.get('guid');\n\n if (guid) {\n return Err(generateSyntaxError(`Cannot pass \\`guid\\` to \\`{{#in-element}}\\``, guid.loc));\n }\n\n let insertBefore = args.get('insertBefore');\n let destination = args.nth(0);\n\n if (destination === null) {\n return Err(\n generateSyntaxError(\n `{{#in-element}} requires a target element as its first positional parameter`,\n args.loc\n )\n );\n }\n\n // TODO Better syntax checks\n\n return Ok({ insertBefore, destination });\n },\n\n translate(\n { node, state }: { node: ASTv2.InvokeBlock; state: NormalizationState },\n {\n insertBefore,\n destination,\n }: { insertBefore: ASTv2.ExpressionNode | null; destination: ASTv2.ExpressionNode }\n ): Result<mir.InElement> {\n let named = node.blocks.get('default');\n let body = VISIT_STMTS.NamedBlock(named, state);\n let destinationResult = VISIT_EXPRS.visit(destination, state);\n\n return Result.all(body, destinationResult)\n .andThen(\n ([body, destination]): Result<{\n body: mir.NamedBlock;\n destination: mir.ExpressionNode;\n insertBefore: mir.ExpressionNode;\n }> => {\n if (insertBefore) {\n return VISIT_EXPRS.visit(insertBefore, state).mapOk((insertBefore) => ({\n body,\n destination,\n insertBefore,\n }));\n } else {\n return Ok({\n body,\n destination,\n insertBefore: new mir.Missing({\n loc: node.callee.loc.collapse('end'),\n }),\n });\n }\n }\n )\n .mapOk(\n ({ body, destination, insertBefore }) =>\n new mir.InElement({\n loc: node.loc,\n block: body,\n insertBefore,\n guid: state.generateUniqueCursor(),\n destination,\n })\n );\n },\n })\n .kw('if', {\n assert(node: ASTv2.InvokeBlock): Result<{\n condition: ASTv2.ExpressionNode;\n }> {\n let { args } = node;\n\n if (!args.named.isEmpty()) {\n return Err(\n generateSyntaxError(\n `{{#if}} cannot receive named parameters, received ${args.named.entries\n .map((e) => e.name.chars)\n .join(', ')}`,\n node.loc\n )\n );\n }\n\n if (args.positional.size > 1) {\n return Err(\n generateSyntaxError(\n `{{#if}} can only receive one positional parameter in block form, the conditional value. Received ${args.positional.size} parameters`,\n node.loc\n )\n );\n }\n\n let condition = args.nth(0);\n\n if (condition === null) {\n return Err(\n generateSyntaxError(\n `{{#if}} requires a condition as its first positional parameter, did not receive any parameters`,\n node.loc\n )\n );\n }\n\n return Ok({ condition });\n },\n\n translate(\n { node, state }: { node: ASTv2.InvokeBlock; state: NormalizationState },\n { condition }: { condition: ASTv2.ExpressionNode }\n ): Result<mir.If> {\n let block = node.blocks.get('default');\n let inverse = node.blocks.get('else');\n\n let conditionResult = VISIT_EXPRS.visit(condition, state);\n let blockResult = VISIT_STMTS.NamedBlock(block, state);\n let inverseResult = inverse ? VISIT_STMTS.NamedBlock(inverse, state) : Ok(null);\n\n return Result.all(conditionResult, blockResult, inverseResult).mapOk(\n ([condition, block, inverse]) =>\n new mir.If({\n loc: node.loc,\n condition,\n block,\n inverse,\n })\n );\n },\n })\n .kw('unless', {\n assert(node: ASTv2.InvokeBlock): Result<{\n condition: ASTv2.ExpressionNode;\n }> {\n let { args } = node;\n\n if (!args.named.isEmpty()) {\n return Err(\n generateSyntaxError(\n `{{#unless}} cannot receive named parameters, received ${args.named.entries\n .map((e) => e.name.chars)\n .join(', ')}`,\n node.loc\n )\n );\n }\n\n if (args.positional.size > 1) {\n return Err(\n generateSyntaxError(\n `{{#unless}} can only receive one positional parameter in block form, the conditional value. Received ${args.positional.size} parameters`,\n node.loc\n )\n );\n }\n\n let condition = args.nth(0);\n\n if (condition === null) {\n return Err(\n generateSyntaxError(\n `{{#unless}} requires a condition as its first positional parameter, did not receive any parameters`,\n node.loc\n )\n );\n }\n\n return Ok({ condition });\n },\n\n translate(\n { node, state }: { node: ASTv2.InvokeBlock; state: NormalizationState },\n { condition }: { condition: ASTv2.ExpressionNode }\n ): Result<mir.If> {\n let block = node.blocks.get('default');\n let inverse = node.blocks.get('else');\n\n let conditionResult = VISIT_EXPRS.visit(condition, state);\n let blockResult = VISIT_STMTS.NamedBlock(block, state);\n let inverseResult = inverse ? VISIT_STMTS.NamedBlock(inverse, state) : Ok(null);\n\n return Result.all(conditionResult, blockResult, inverseResult).mapOk(\n ([condition, block, inverse]) =>\n new mir.If({\n loc: node.loc,\n condition: new mir.Not({ value: condition, loc: node.loc }),\n block,\n inverse,\n })\n );\n },\n })\n .kw('each', {\n assert(node: ASTv2.InvokeBlock): Result<{\n value: ASTv2.ExpressionNode;\n key: ASTv2.ExpressionNode | null;\n }> {\n let { args } = node;\n\n if (!args.named.entries.every((e) => e.name.chars === 'key')) {\n return Err(\n generateSyntaxError(\n `{{#each}} can only receive the 'key' named parameter, received ${args.named.entries\n .filter((e) => e.name.chars !== 'key')\n .map((e) => e.name.chars)\n .join(', ')}`,\n args.named.loc\n )\n );\n }\n\n if (args.positional.size > 1) {\n return Err(\n generateSyntaxError(\n `{{#each}} can only receive one positional parameter, the collection being iterated. Received ${args.positional.size} parameters`,\n args.positional.loc\n )\n );\n }\n\n let value = args.nth(0);\n let key = args.get('key');\n\n if (value === null) {\n return Err(\n generateSyntaxError(\n `{{#each}} requires an iterable value to be passed as its first positional parameter, did not receive any parameters`,\n args.loc\n )\n );\n }\n\n return Ok({ value, key });\n },\n\n translate(\n { node, state }: { node: ASTv2.InvokeBlock; state: NormalizationState },\n { value, key }: { value: ASTv2.ExpressionNode; key: ASTv2.ExpressionNode | null }\n ): Result<mir.Each> {\n let block = node.blocks.get('default');\n let inverse = node.blocks.get('else');\n\n let valueResult = VISIT_EXPRS.visit(value, state);\n let keyResult = key ? VISIT_EXPRS.visit(key, state) : Ok(null);\n\n let blockResult = VISIT_STMTS.NamedBlock(block, state);\n let inverseResult = inverse ? VISIT_STMTS.NamedBlock(inverse, state) : Ok(null);\n\n return Result.all(valueResult, keyResult, blockResult, inverseResult).mapOk(\n ([value, key, block, inverse]) =>\n new mir.Each({\n loc: node.loc,\n value,\n key,\n block,\n inverse,\n })\n );\n },\n })\n .kw('let', {\n assert(node: ASTv2.InvokeBlock): Result<{\n positional: ASTv2.PositionalArguments;\n }> {\n let { args } = node;\n\n if (!args.named.isEmpty()) {\n return Err(\n generateSyntaxError(\n `{{#let}} cannot receive named parameters, received ${args.named.entries\n .map((e) => e.name.chars)\n .join(', ')}`,\n args.named.loc\n )\n );\n }\n\n if (args.positional.size === 0) {\n return Err(\n generateSyntaxError(\n `{{#let}} requires at least one value as its first positional parameter, did not receive any parameters`,\n args.positional.loc\n )\n );\n }\n\n if (node.blocks.get('else')) {\n return Err(\n generateSyntaxError(`{{#let}} cannot receive an {{else}} block`, args.positional.loc)\n );\n }\n\n return Ok({ positional: args.positional });\n },\n\n translate(\n { node, state }: { node: ASTv2.InvokeBlock; state: NormalizationState },\n { positional }: { positional: ASTv2.PositionalArguments }\n ): Result<mir.Let> {\n let block = node.blocks.get('default');\n\n let positionalResult = VISIT_EXPRS.Positional(positional, state);\n let blockResult = VISIT_STMTS.NamedBlock(block, state);\n\n return Result.all(positionalResult, blockResult).mapOk(\n ([positional, block]) =>\n new mir.Let({\n loc: node.loc,\n positional,\n block,\n })\n );\n },\n })\n .kw('-with-dynamic-vars', {\n assert(node: ASTv2.InvokeBlock): Result<{\n named: ASTv2.NamedArguments;\n }> {\n return Ok({ named: node.args.named });\n },\n\n translate(\n { node, state }: { node: ASTv2.InvokeBlock; state: NormalizationState },\n { named }: { named: ASTv2.NamedArguments }\n ): Result<mir.WithDynamicVars> {\n let block = node.blocks.get('default');\n\n let namedResult = VISIT_EXPRS.NamedArguments(named, state);\n let blockResult = VISIT_STMTS.NamedBlock(block, state);\n\n return Result.all(namedResult, blockResult).mapOk(\n ([named, block]) =>\n new mir.WithDynamicVars({\n loc: node.loc,\n named,\n block,\n })\n );\n },\n })\n .kw('component', {\n assert: assertCurryKeyword(CURRIED_COMPONENT),\n\n translate(\n { node, state }: { node: ASTv2.InvokeBlock; state: NormalizationState },\n { definition, args }: { definition: ASTv2.ExpressionNode; args: ASTv2.Args }\n ): Result<mir.InvokeComponent> {\n let definitionResult = VISIT_EXPRS.visit(definition, state);\n let argsResult = VISIT_EXPRS.Args(args, state);\n let blocksResult = VISIT_STMTS.NamedBlocks(node.blocks, state);\n\n return Result.all(definitionResult, argsResult, blocksResult).mapOk(\n ([definition, args, blocks]) =>\n new mir.InvokeComponent({\n loc: node.loc,\n definition,\n args,\n blocks,\n })\n );\n },\n });\n","import { CURRIED_COMPONENT, CURRIED_HELPER, CURRIED_MODIFIER } from '@glimmer/constants';\n\nimport { keywords } from './impl';\nimport { curryKeyword } from './utils/curry';\nimport { getDynamicVarKeyword } from './utils/dynamic-vars';\nimport { hasBlockKeyword } from './utils/has-block';\nimport { ifUnlessInlineKeyword } from './utils/if-unless';\nimport { logKeyword } from './utils/log';\n\nexport const CALL_KEYWORDS = keywords('Call')\n .kw('has-block', hasBlockKeyword('has-block'))\n .kw('has-block-params', hasBlockKeyword('has-block-params'))\n .kw('-get-dynamic-var', getDynamicVarKeyword)\n .kw('log', logKeyword)\n .kw('if', ifUnlessInlineKeyword('if'))\n .kw('unless', ifUnlessInlineKeyword('unless'))\n .kw('component', curryKeyword(CURRIED_COMPONENT))\n .kw('helper', curryKeyword(CURRIED_HELPER))\n .kw('modifier', curryKeyword(CURRIED_MODIFIER));\n","import { keywords } from './impl';\n\nexport const MODIFIER_KEYWORDS = keywords('Modifier');\n","import type { Dict, WellKnownAttrName, WellKnownTagName } from '@glimmer/interfaces';\nimport { WellKnownAttrNames, WellKnownTagNames } from '@glimmer/wire-format';\n\n// There is a small whitelist of namespaced attributes specially\n// enumerated in\n// https://www.w3.org/TR/html/syntax.html#attributes-0\n//\n// > When a foreign element has one of the namespaced attributes given by\n// > the local name and namespace of the first and second cells of a row\n// > from the following table, it must be written using the name given by\n// > the third cell from the same row.\n//\n// In all other cases, colons are interpreted as a regular character\n// with no special meaning:\n//\n// > No other namespaced attribute can be expressed in the HTML syntax.\n\nconst XLINK = 'http://www.w3.org/1999/xlink';\nconst XML = 'http://www.w3.org/XML/1998/namespace';\nconst XMLNS = 'http://www.w3.org/2000/xmlns/';\n\nconst WHITELIST: Dict<string | undefined> = {\n 'xlink:actuate': XLINK,\n 'xlink:arcrole': XLINK,\n 'xlink:href': XLINK,\n 'xlink:role': XLINK,\n 'xlink:show': XLINK,\n 'xlink:title': XLINK,\n 'xlink:type': XLINK,\n 'xml:base': XML,\n 'xml:lang': XML,\n 'xml:space': XML,\n xmlns: XMLNS,\n 'xmlns:xlink': XMLNS,\n};\n\nexport function getAttrNamespace(attrName: string): string | undefined {\n return WHITELIST[attrName];\n}\n\nconst DEFLATE_TAG_TABLE: {\n [tagName: string]: WellKnownTagName | undefined;\n} = {\n div: WellKnownTagNames.div,\n span: WellKnownTagNames.span,\n p: WellKnownTagNames.p,\n a: WellKnownTagNames.a,\n};\n\nconst INFLATE_TAG_TABLE: {\n [I in WellKnownTagName]: string;\n} = ['div', 'span', 'p', 'a'];\n\nexport function deflateTagName(tagName: string): string | WellKnownTagName {\n return DEFLATE_TAG_TABLE[tagName] ?? tagName;\n}\n\nexport function inflateTagName(tagName: string | WellKnownTagName): string {\n return typeof tagName === 'string' ? tagName : INFLATE_TAG_TABLE[tagName];\n}\n\nconst DEFLATE_ATTR_TABLE: {\n [tagName: string]: WellKnownAttrName | undefined;\n} = {\n class: WellKnownAttrNames.class,\n id: WellKnownAttrNames.id,\n value: WellKnownAttrNames.value,\n name: WellKnownAttrNames.name,\n type: WellKnownAttrNames.type,\n style: WellKnownAttrNames.style,\n href: WellKnownAttrNames.href,\n};\n\nconst INFLATE_ATTR_TABLE: {\n [I in WellKnownAttrName]: string;\n} = ['class', 'id', 'value', 'name', 'type', 'style', 'href'];\n\nexport function deflateAttrName(attrName: string): string | WellKnownAttrName {\n return DEFLATE_ATTR_TABLE[attrName] ?? attrName;\n}\n\nexport function inflateAttrName(attrName: string | WellKnownAttrName): string {\n return typeof attrName === 'string' ? attrName : INFLATE_ATTR_TABLE[attrName];\n}\n","import { ASTv2, maybeLoc, src } from '@glimmer/syntax';\n\nimport type { NormalizationState } from '../../context';\n\nimport { OptionalList } from '../../../../shared/list';\nimport { Ok, Result, ResultArray } from '../../../../shared/result';\nimport { getAttrNamespace } from '../../../../utils';\nimport * as mir from '../../../2-encoding/mir';\nimport { MODIFIER_KEYWORDS } from '../../keywords';\nimport { convertPathToCallIfKeyword, VISIT_EXPRS } from '../expressions';\n\nexport type ValidAttr = mir.StaticAttr | mir.DynamicAttr | mir.SplatAttr;\n\ntype ProcessedAttributes = {\n attrs: ValidAttr[];\n args: mir.NamedArguments;\n};\n\nexport interface Classified {\n readonly dynamicFeatures: boolean;\n\n arg(attr: ASTv2.AttrNode, classified: ClassifiedElement): Result<mir.NamedArgument>;\n toStatement(classified: ClassifiedElement, prepared: PreparedArgs): Result<mir.Statement>;\n}\n\nexport class ClassifiedElement {\n readonly delegate: Classified;\n\n constructor(\n readonly element: ASTv2.ElementNode,\n delegate: Classified,\n readonly state: NormalizationState\n ) {\n this.delegate = delegate;\n }\n\n toStatement(): Result<mir.Statement> {\n return this.prepare().andThen((prepared) => this.delegate.toStatement(this, prepared));\n }\n\n private attr(attr: ASTv2.HtmlAttr): Result<ValidAttr> {\n let name = attr.name;\n let rawValue = attr.value;\n let namespace = getAttrNamespace(name.chars) || undefined;\n\n if (ASTv2.isLiteral(rawValue, 'string')) {\n return Ok(\n new mir.StaticAttr({\n loc: attr.loc,\n name,\n value: rawValue.toSlice(),\n namespace,\n kind: {\n component: this.delegate.dynamicFeatures,\n },\n })\n );\n }\n\n return VISIT_EXPRS.visit(convertPathToCallIfKeyword(rawValue), this.state).mapOk((value) => {\n let isTrusting = attr.trusting;\n\n return new mir.DynamicAttr({\n loc: attr.loc,\n name,\n value: value,\n namespace,\n kind: {\n trusting: isTrusting,\n component: this.delegate.dynamicFeatures,\n },\n });\n });\n }\n\n private modifier(modifier: ASTv2.ElementModifier): Result<mir.Modifier> {\n let translated = MODIFIER_KEYWORDS.translate(modifier, this.state);\n\n if (translated !== null) {\n return translated;\n }\n\n let head = VISIT_EXPRS.visit(modifier.callee, this.state);\n let args = VISIT_EXPRS.Args(modifier.args, this.state);\n\n return Result.all(head, args).mapOk(\n ([head, args]) =>\n new mir.Modifier({\n loc: modifier.loc,\n callee: head,\n args,\n })\n );\n }\n\n private attrs(): Result<ProcessedAttributes> {\n let attrs = new ResultArray<ValidAttr>();\n let args = new ResultArray<mir.NamedArgument>();\n\n // Unlike most attributes, the `type` attribute can change how\n // subsequent attributes are interpreted by the browser. To address\n // this, in simple cases, we special case the `type` attribute to be set\n // last. For elements with splattributes, where attribute order affects\n // precedence, this re-ordering happens at runtime instead.\n // See https://github.com/glimmerjs/glimmer-vm/pull/726\n let typeAttr: ASTv2.AttrNode | null = null;\n let simple = this.element.attrs.filter((attr) => attr.type === 'SplatAttr').length === 0;\n\n for (let attr of this.element.attrs) {\n if (attr.type === 'SplatAttr') {\n attrs.add(\n Ok(new mir.SplatAttr({ loc: attr.loc, symbol: this.state.scope.allocateBlock('attrs') }))\n );\n } else if (attr.name.chars === 'type' && simple) {\n typeAttr = attr;\n } else {\n attrs.add(this.attr(attr));\n }\n }\n\n for (let arg of this.element.componentArgs) {\n args.add(this.delegate.arg(arg, this));\n }\n\n if (typeAttr) {\n attrs.add(this.attr(typeAttr));\n }\n\n return Result.all(args.toArray(), attrs.toArray()).mapOk(([args, attrs]) => ({\n attrs,\n args: new mir.NamedArguments({\n loc: maybeLoc(args, src.SourceSpan.NON_EXISTENT),\n entries: OptionalList(args),\n }),\n }));\n }\n\n private prepare(): Result<PreparedArgs> {\n let attrs = this.attrs();\n let modifiers = new ResultArray(this.element.modifiers.map((m) => this.modifier(m))).toArray();\n\n return Result.all(attrs, modifiers).mapOk(([result, modifiers]) => {\n let { attrs, args } = result;\n\n let elementParams = [...attrs, ...modifiers];\n\n let params = new mir.ElementParameters({\n loc: maybeLoc(elementParams, src.SourceSpan.NON_EXISTENT),\n body: OptionalList(elementParams),\n });\n\n return { args, params };\n });\n }\n}\n\nexport interface PreparedArgs {\n args: mir.NamedArguments;\n params: mir.ElementParameters;\n}\n\nexport function hasDynamicFeatures({\n attrs,\n modifiers,\n}: Pick<ASTv2.ElementNode, 'attrs' | 'modifiers'>): boolean {\n // ElementModifier needs the special ComponentOperations\n if (modifiers.length > 0) {\n return true;\n }\n\n // Splattributes need the special ComponentOperations to merge into\n return !!attrs.filter((attr) => attr.type === 'SplatAttr')[0];\n}\n","import type { ASTv2 } from '@glimmer/syntax';\n\nimport type { Result } from '../../../../shared/result';\nimport type { NormalizationState } from '../../context';\nimport type { Classified, ClassifiedElement, PreparedArgs } from './classified';\n\nimport * as mir from '../../../2-encoding/mir';\nimport { convertPathToCallIfKeyword, VISIT_EXPRS } from '../expressions';\nimport { VISIT_STMTS } from '../statements';\n\nexport class ClassifiedComponent implements Classified {\n readonly dynamicFeatures = true;\n\n constructor(\n private tag: mir.ExpressionNode,\n private element: ASTv2.InvokeComponent\n ) {}\n\n arg(attr: ASTv2.ComponentArg, { state }: ClassifiedElement): Result<mir.NamedArgument> {\n let name = attr.name;\n\n return VISIT_EXPRS.visit(convertPathToCallIfKeyword(attr.value), state).mapOk(\n (value) =>\n new mir.NamedArgument({\n loc: attr.loc,\n key: name,\n value,\n })\n );\n }\n\n toStatement(component: ClassifiedElement, { args, params }: PreparedArgs): Result<mir.Statement> {\n let { element, state } = component;\n\n return this.blocks(state).mapOk(\n (blocks) =>\n new mir.Component({\n loc: element.loc,\n tag: this.tag,\n params,\n args,\n blocks,\n })\n );\n }\n\n private blocks(state: NormalizationState): Result<mir.NamedBlocks> {\n return VISIT_STMTS.NamedBlocks(this.element.blocks, state);\n }\n}\n","import type { ASTv2, SourceSlice } from '@glimmer/syntax';\nimport { generateSyntaxError } from '@glimmer/syntax';\n\nimport type { Result } from '../../../../shared/result';\nimport type { Classified, ClassifiedElement, PreparedArgs } from './classified';\n\nimport { Err } from '../../../../shared/result';\nimport * as mir from '../../../2-encoding/mir';\nimport { VISIT_STMTS } from '../statements';\n\nexport class ClassifiedSimpleElement implements Classified {\n constructor(\n private tag: SourceSlice,\n private element: ASTv2.SimpleElement,\n readonly dynamicFeatures: boolean\n ) {}\n\n readonly isComponent = false;\n\n arg(attr: ASTv2.ComponentArg): Result<mir.NamedArgument> {\n return Err(\n generateSyntaxError(\n `${attr.name.chars} is not a valid attribute name. @arguments are only allowed on components, but the tag for this element (\\`${this.tag.chars}\\`) is a regular, non-component HTML element.`,\n attr.loc\n )\n );\n }\n\n toStatement(classified: ClassifiedElement, { params }: PreparedArgs): Result<mir.Statement> {\n let { state, element } = classified;\n\n let body = VISIT_STMTS.visitList(this.element.body, state);\n\n return body.mapOk(\n (body) =>\n new mir.SimpleElement({\n loc: element.loc,\n tag: this.tag,\n params,\n body: body.toArray(),\n dynamicFeatures: this.dynamicFeatures,\n })\n );\n }\n}\n","import { ASTv2 } from '@glimmer/syntax';\n\nimport type { NormalizationState } from '../context';\n\nimport { OptionalList } from '../../../shared/list';\nimport { Ok, Result, ResultArray } from '../../../shared/result';\nimport * as mir from '../../2-encoding/mir';\nimport { BLOCK_KEYWORDS } from '../keywords';\nimport { APPEND_KEYWORDS } from '../keywords/append';\nimport { ClassifiedElement, hasDynamicFeatures } from './element/classified';\nimport { ClassifiedComponent } from './element/component';\nimport { ClassifiedSimpleElement } from './element/simple-element';\nimport { VISIT_EXPRS } from './expressions';\n\nclass NormalizationStatements {\n visitList(\n nodes: readonly ASTv2.ContentNode[],\n state: NormalizationState\n ): Result<OptionalList<mir.Statement>> {\n return new ResultArray(nodes.map((e) => VISIT_STMTS.visit(e, state)))\n .toOptionalList()\n .mapOk((list) => list.filter((s: mir.Statement | null): s is mir.Statement => s !== null));\n }\n\n visit(node: ASTv2.ContentNode, state: NormalizationState): Result<mir.Statement | null> {\n switch (node.type) {\n case 'GlimmerComment':\n return Ok(null);\n case 'AppendContent':\n return this.AppendContent(node, state);\n case 'HtmlText':\n return Ok(this.TextNode(node));\n case 'HtmlComment':\n return Ok(this.HtmlComment(node));\n case 'InvokeBlock':\n return this.InvokeBlock(node, state);\n case 'InvokeComponent':\n return this.Component(node, state);\n case 'SimpleElement':\n return this.SimpleElement(node, state);\n }\n }\n\n InvokeBlock(node: ASTv2.InvokeBlock, state: NormalizationState): Result<mir.Statement> {\n let translated = BLOCK_KEYWORDS.translate(node, state);\n\n if (translated !== null) {\n return translated;\n }\n\n let head = VISIT_EXPRS.visit(node.callee, state);\n let args = VISIT_EXPRS.Args(node.args, state);\n\n return Result.all(head, args).andThen(([head, args]) =>\n this.NamedBlocks(node.blocks, state).mapOk(\n (blocks) =>\n new mir.InvokeBlock({\n loc: node.loc,\n head,\n args,\n blocks,\n })\n )\n );\n }\n\n NamedBlocks(blocks: ASTv2.NamedBlocks, state: NormalizationState): Result<mir.NamedBlocks> {\n let list = new ResultArray(blocks.blocks.map((b) => this.NamedBlock(b, state)));\n\n return list\n .toArray()\n .mapOk((list) => new mir.NamedBlocks({ loc: blocks.loc, blocks: OptionalList(list) }));\n }\n\n NamedBlock(named: ASTv2.NamedBlock, state: NormalizationState): Result<mir.NamedBlock> {\n let body = state.visitBlock(named.block);\n\n return body.mapOk((body) => {\n return new mir.NamedBlock({\n loc: named.loc,\n name: named.name,\n body: body.toArray(),\n scope: named.block.scope,\n });\n });\n }\n\n SimpleElement(element: ASTv2.SimpleElement, state: NormalizationState): Result<mir.Statement> {\n return new ClassifiedElement(\n element,\n new ClassifiedSimpleElement(element.tag, element, hasDynamicFeatures(element)),\n state\n ).toStatement();\n }\n\n Component(component: ASTv2.InvokeComponent, state: NormalizationState): Result<mir.Statement> {\n return VISIT_EXPRS.visit(component.callee, state).andThen((callee) =>\n new ClassifiedElement(\n component,\n new ClassifiedComponent(callee, component),\n state\n ).toStatement()\n );\n }\n\n AppendContent(append: ASTv2.AppendContent, state: NormalizationState): Result<mir.Statement> {\n let translated = APPEND_KEYWORDS.translate(append, state);\n\n if (translated !== null) {\n return translated;\n }\n\n let value = VISIT_EXPRS.visit(append.value, state);\n\n return value.mapOk((value) => {\n if (append.trusting) {\n return new mir.AppendTrustedHTML({\n loc: append.loc,\n html: value,\n });\n } else {\n return new mir.AppendTextNode({\n loc: append.loc,\n text: value,\n });\n }\n });\n }\n\n TextNode(text: ASTv2.HtmlText): mir.Statement {\n return new mir.AppendTextNode({\n loc: text.loc,\n text: new ASTv2.LiteralExpression({ loc: text.loc, value: text.chars }),\n });\n }\n\n HtmlComment(comment: ASTv2.HtmlComment): mir.Statement {\n return new mir.AppendComment({\n loc: comment.loc,\n value: comment.text,\n });\n }\n}\n\nexport const VISIT_STMTS = new NormalizationStatements();\n","import type { ASTv2, SymbolTable } from '@glimmer/syntax';\n\nimport type { OptionalList } from '../../shared/list';\nimport type { Result } from '../../shared/result';\nimport type * as mir from '../2-encoding/mir';\n\nimport { VISIT_STMTS } from './visitors/statements';\n\n/**\n * This is the mutable state for this compiler pass.\n */\nexport class NormalizationState {\n _currentScope: SymbolTable;\n _cursorCount = 0;\n\n constructor(\n block: SymbolTable,\n readonly isStrict: boolean\n ) {\n this._currentScope = block;\n }\n\n generateUniqueCursor(): string {\n return `%cursor:${this._cursorCount++}%`;\n }\n\n get scope(): SymbolTable {\n return this._currentScope;\n }\n\n visitBlock(block: ASTv2.Block): Result<OptionalList<mir.Statement>> {\n let oldBlock = this._currentScope;\n this._currentScope = block.scope;\n\n try {\n return VISIT_STMTS.visitList(block.body, this);\n } finally {\n this._currentScope = oldBlock;\n }\n }\n}\n","/// ResolutionType ///\n\nexport type VALUE_RESOLUTION = 'value';\nexport const VALUE_RESOLUTION: VALUE_RESOLUTION = 'value';\n\nexport type COMPONENT_RESOLUTION = 'component';\nexport const COMPONENT_RESOLUTION: COMPONENT_RESOLUTION = 'component';\n\nexport type HELPER_RESOLUTION = 'helper';\nexport const HELPER_RESOLUTION: HELPER_RESOLUTION = 'helper';\n\nexport type MODIFIER_RESOLUTION = 'modifier';\nexport const MODIFIER_RESOLUTION: MODIFIER_RESOLUTION = 'modifier';\n\nexport type COMPONENT_OR_HELPER_RESOLUTION = 'component or helper';\nexport const COMPONENT_OR_HELPER_RESOLUTION: COMPONENT_OR_HELPER_RESOLUTION = 'component or helper';\n\nexport type ResolutionType =\n | VALUE_RESOLUTION\n | COMPONENT_RESOLUTION\n | HELPER_RESOLUTION\n | MODIFIER_RESOLUTION\n | COMPONENT_OR_HELPER_RESOLUTION;\n","import type { HasSourceSpan } from '@glimmer/syntax';\nimport { CURRIED_COMPONENT, CURRIED_HELPER } from '@glimmer/constants';\nimport { generateSyntaxError, loc } from '@glimmer/syntax';\n\nimport type { Result } from '../../../shared/result';\nimport type * as mir from '../../2-encoding/mir';\nimport type { ResolutionType } from './constants';\n\nimport { Err, Ok } from '../../../shared/result';\nimport {\n COMPONENT_OR_HELPER_RESOLUTION,\n COMPONENT_RESOLUTION,\n HELPER_RESOLUTION,\n MODIFIER_RESOLUTION,\n VALUE_RESOLUTION,\n} from './constants';\n\nexport default class StrictModeValidationPass {\n // This is done at the end of all the keyword normalizations\n // At this point any free variables that isn't a valid keyword\n // in its context should be considered a syntax error. We\n // probably had various opportunities to do this inline in the\n // earlier passes, but this aims to produce a better syntax\n // error as we don't always have the right loc-context to do\n // so in the other spots.\n static validate(template: mir.Template): Result<mir.Template> {\n return new this(template).validate();\n }\n\n private constructor(private template: mir.Template) {}\n\n validate(): Result<mir.Template> {\n return this.Statements(this.template.body).mapOk(() => this.template);\n }\n\n Statements(statements: mir.Statement[]): Result<null> {\n let result = Ok(null);\n\n for (let statement of statements) {\n result = result.andThen(() => this.Statement(statement));\n }\n\n return result;\n }\n\n NamedBlocks({ blocks }: mir.NamedBlocks): Result<null> {\n let result = Ok(null);\n\n for (let block of blocks.toArray()) {\n result = result.andThen(() => this.NamedBlock(block));\n }\n\n return result;\n }\n\n NamedBlock(block: mir.NamedBlock): Result<null> {\n return this.Statements(block.body);\n }\n\n Statement(statement: mir.Statement): Result<null> {\n switch (statement.type) {\n case 'InElement':\n return this.InElement(statement);\n\n case 'Debugger':\n return Ok(null);\n\n case 'Yield':\n return this.Yield(statement);\n\n case 'AppendTrustedHTML':\n return this.AppendTrustedHTML(statement);\n\n case 'AppendTextNode':\n return this.AppendTextNode(statement);\n\n case 'Component':\n return this.Component(statement);\n\n case 'SimpleElement':\n return this.SimpleElement(statement);\n\n case 'InvokeBlock':\n return this.InvokeBlock(statement);\n\n case 'AppendComment':\n return Ok(null);\n\n case 'If':\n return this.If(statement);\n\n case 'Each':\n return this.Each(statement);\n\n case 'Let':\n return this.Let(statement);\n\n case 'WithDynamicVars':\n return this.WithDynamicVars(statement);\n\n case 'InvokeComponent':\n return this.InvokeComponent(statement);\n }\n }\n\n Expressions(expressions: mir.ExpressionNode[]): Result<null> {\n let result = Ok(null);\n\n for (let expression of expressions) {\n result = result.andThen(() => this.Expression(expression));\n }\n\n return result;\n }\n\n Expression(\n expression: mir.ExpressionNode,\n span: HasSourceSpan = expression,\n resolution?: ResolutionType\n ): Result<null> {\n switch (expression.type) {\n case 'Literal':\n case 'Keyword':\n case 'Missing':\n case 'This':\n case 'Arg':\n case 'Local':\n case 'HasBlock':\n case 'HasBlockParams':\n case 'GetDynamicVar':\n return Ok(null);\n\n case 'PathExpression':\n return this.Expression(expression.head, span, resolution);\n\n case 'Free':\n return this.errorFor(expression.name, span, resolution);\n\n case 'InterpolateExpression':\n return this.InterpolateExpression(expression, span, resolution);\n\n case 'CallExpression':\n return this.CallExpression(expression, span, resolution ?? HELPER_RESOLUTION);\n\n case 'Not':\n return this.Expression(expression.value, span, resolution);\n\n case 'IfInline':\n return this.IfInline(expression);\n\n case 'Curry':\n return this.Curry(expression);\n\n case 'Log':\n return this.Log(expression);\n }\n }\n\n Args(args: mir.Args): Result<null> {\n return this.Positional(args.positional).andThen(() => this.NamedArguments(args.named));\n }\n\n Positional(positional: mir.Positional, span?: HasSourceSpan): Result<null> {\n let result = Ok(null);\n let expressions = positional.list.toArray();\n\n // For cases like {{yield foo}}, when there is only a single argument, it\n // makes for a slightly better error to report that entire span. However,\n // when there are more than one, we need to be specific.\n if (expressions.length === 1) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme PresentArray\n result = this.Expression(expressions[0]!, span);\n } else {\n result = this.Expressions(expressions);\n }\n\n return result;\n }\n\n NamedArguments({ entries }: mir.NamedArguments): Result<null> {\n let result = Ok(null);\n\n for (let arg of entries.toArray()) {\n result = result.andThen(() => this.NamedArgument(arg));\n }\n\n return result;\n }\n\n NamedArgument(arg: mir.NamedArgument): Result<null> {\n if (arg.value.type === 'CallExpression') {\n return this.Expression(arg.value, arg, HELPER_RESOLUTION);\n } else {\n return this.Expression(arg.value, arg);\n }\n }\n\n ElementParameters({ body }: mir.ElementParameters): Result<null> {\n let result = Ok(null);\n\n for (let param of body.toArray()) {\n result = result.andThen(() => this.ElementParameter(param));\n }\n\n return result;\n }\n\n ElementParameter(param: mir.ElementParameter): Result<null> {\n switch (param.type) {\n case 'StaticAttr':\n return Ok(null);\n case 'DynamicAttr':\n return this.DynamicAttr(param);\n case 'Modifier':\n return this.Modifier(param);\n case 'SplatAttr':\n return Ok(null);\n }\n }\n\n DynamicAttr(attr: mir.DynamicAttr): Result<null> {\n if (attr.value.type === 'CallExpression') {\n return this.Expression(attr.value, attr, HELPER_RESOLUTION);\n } else {\n return this.Expression(attr.value, attr);\n }\n }\n\n Modifier(modifier: mir.Modifier): Result<null> {\n return this.Expression(modifier.callee, modifier, MODIFIER_RESOLUTION).andThen(() =>\n this.Args(modifier.args)\n );\n }\n\n InElement(inElement: mir.InElement): Result<null> {\n return (\n this.Expression(inElement.destination)\n // Unfortunately we lost the `insertBefore=` part of the span\n .andThen(() => this.Expression(inElement.insertBefore))\n .andThen(() => this.NamedBlock(inElement.block))\n );\n }\n\n Yield(statement: mir.Yield): Result<null> {\n return this.Positional(statement.positional, statement);\n }\n\n AppendTrustedHTML(statement: mir.AppendTrustedHTML): Result<null> {\n return this.Expression(statement.html, statement);\n }\n\n AppendTextNode(statement: mir.AppendTextNode): Result<null> {\n if (statement.text.type === 'CallExpression') {\n return this.Expression(statement.text, statement, COMPONENT_OR_HELPER_RESOLUTION);\n } else {\n return this.Expression(statement.text, statement);\n }\n }\n\n Component(statement: mir.Component): Result<null> {\n return this.Expression(statement.tag, statement, COMPONENT_RESOLUTION)\n .andThen(() => this.ElementParameters(statement.params))\n .andThen(() => this.NamedArguments(statement.args))\n .andThen(() => this.NamedBlocks(statement.blocks));\n }\n\n SimpleElement(statement: mir.SimpleElement): Result<null> {\n return this.ElementParameters(statement.params).andThen(() => this.Statements(statement.body));\n }\n\n InvokeBlock(statement: mir.InvokeBlock): Result<null> {\n return this.Expression(statement.head, statement.head, COMPONENT_RESOLUTION)\n .andThen(() => this.Args(statement.args))\n .andThen(() => this.NamedBlocks(statement.blocks));\n }\n\n If(statement: mir.If): Result<null> {\n return this.Expression(statement.condition, statement)\n .andThen(() => this.NamedBlock(statement.block))\n .andThen(() => {\n if (statement.inverse) {\n return this.NamedBlock(statement.inverse);\n } else {\n return Ok(null);\n }\n });\n }\n\n Each(statement: mir.Each): Result<null> {\n return this.Expression(statement.value, statement)\n .andThen(() => {\n if (statement.key) {\n return this.Expression(statement.key, statement);\n } else {\n return Ok(null);\n }\n })\n .andThen(() => this.NamedBlock(statement.block))\n .andThen(() => {\n if (statement.inverse) {\n return this.NamedBlock(statement.inverse);\n } else {\n return Ok(null);\n }\n });\n }\n\n Let(statement: mir.Let): Result<null> {\n return this.Positional(statement.positional).andThen(() => this.NamedBlock(statement.block));\n }\n\n WithDynamicVars(statement: mir.WithDynamicVars): Result<null> {\n return this.NamedArguments(statement.named).andThen(() => this.NamedBlock(statement.block));\n }\n\n InvokeComponent(statement: mir.InvokeComponent): Result<null> {\n return this.Expression(statement.definition, statement, COMPONENT_RESOLUTION)\n .andThen(() => this.Args(statement.args))\n .andThen(() => {\n if (statement.blocks) {\n return this.NamedBlocks(statement.blocks);\n } else {\n return Ok(null);\n }\n });\n }\n\n InterpolateExpression(\n expression: mir.InterpolateExpression,\n span: HasSourceSpan,\n resolution?: ResolutionType\n ): Result<null> {\n let expressions = expression.parts.toArray();\n\n if (expressions.length === 1) {\n return this.Expression(expressions[0], span, resolution);\n } else {\n return this.Expressions(expressions);\n }\n }\n\n CallExpression(\n expression: mir.CallExpression,\n span: HasSourceSpan,\n resolution?: ResolutionType\n ): Result<null> {\n return this.Expression(expression.callee, span, resolution).andThen(() =>\n this.Args(expression.args)\n );\n }\n\n IfInline(expression: mir.IfInline): Result<null> {\n return this.Expression(expression.condition)\n .andThen(() => this.Expression(expression.truthy))\n .andThen(() => {\n if (expression.falsy) {\n return this.Expression(expression.falsy);\n } else {\n return Ok(null);\n }\n });\n }\n\n Curry(expression: mir.Curry): Result<null> {\n let resolution: ResolutionType;\n\n if (expression.curriedType === CURRIED_COMPONENT) {\n resolution = COMPONENT_RESOLUTION;\n } else if (expression.curriedType === CURRIED_HELPER) {\n resolution = HELPER_RESOLUTION;\n } else {\n resolution = MODIFIER_RESOLUTION;\n }\n\n return this.Expression(expression.definition, expression, resolution).andThen(() =>\n this.Args(expression.args)\n );\n }\n\n Log(expression: mir.Log): Result<null> {\n return this.Positional(expression.positional, expression);\n }\n\n errorFor(\n name: string,\n span: HasSourceSpan,\n type: ResolutionType = VALUE_RESOLUTION\n ): Result<never> {\n return Err(\n generateSyntaxError(\n `Attempted to resolve a ${type} in a strict mode template, but that value was not in scope: ${name}`,\n loc(span)\n )\n );\n }\n}\n","import type { ASTv2, src } from '@glimmer/syntax';\nimport { DebugLogger, frag, fragment, valueFragment } from '@glimmer/debug';\nimport { LOCAL_TRACE_LOGGING } from '@glimmer/local-debug-flags';\nimport { LOCAL_LOGGER } from '@glimmer/util';\n\nimport type { Result } from '../../shared/result';\n\nimport * as mir from '../2-encoding/mir';\nimport { NormalizationState } from './context';\nimport { VISIT_STMTS } from './visitors/statements';\nimport StrictModeValidationPass from './visitors/strict-mode';\n\n/**\n * Normalize the AST from @glimmer/syntax into the HIR. The HIR has special\n * instructions for keywords like `{{yield}}`, `(has-block)` and\n * `{{#in-element}}`.\n *\n * Most importantly, it also classifies HTML element syntax into:\n *\n * 1. simple HTML element (with optional splattributes)\n * 2. component invocation\n *\n * Because the @glimmer/syntax AST gives us a string for an element's tag,\n * this pass also normalizes that string into an expression.\n *\n * ```\n * // normalized into a path expression whose head is `this` and tail is\n * // `[\"x\"]`\n * <this.x />\n *\n * {{#let expr as |t|}}\n * // `\"t\"` is normalized into a variable lookup.\n * <t />\n *\n * // normalized into a path expression whose head is the variable lookup\n * // `t` and tail is `[\"input\"]`.\n * <t.input />\n * {{/let}}\n *\n * // normalized into a free variable lookup for `SomeComponent` (with the\n * // context `ComponentHead`).\n * <SomeComponent />\n *\n * // normalized into a path expression whose head is the free variable\n * // `notInScope` (with the context `Expression`), and whose tail is\n * // `[\"SomeComponent\"]`. In resolver mode, this path will be rejected later,\n * // since it cannot serve as an input to the resolver.\n * <notInScope.SomeComponent />\n * ```\n */\nexport default function normalize(\n source: src.Source,\n root: ASTv2.Template,\n isStrict: boolean\n): Result<mir.Template> {\n // create a new context for the normalization pass\n let state = new NormalizationState(root.table, isStrict);\n\n if (LOCAL_TRACE_LOGGING) {\n const logger = DebugLogger.configured();\n const done = logger.group(`pass0: visiting`).collapsed();\n logger.log(valueFragment(root.table));\n // LOCAL_LOGGER.debug('symbols', root.table);\n logger.log(valueFragment(source));\n done();\n }\n\n let body = VISIT_STMTS.visitList(root.body, state);\n\n if (LOCAL_TRACE_LOGGING) {\n const logger = DebugLogger.configured();\n\n if (body.isOk) {\n const done = logger.group(frag`pass0: out`).collapsed();\n const ops = body.value.toPresentArray();\n\n if (ops) {\n const full = frag` ${valueFragment(ops)}`.subtle();\n logger.log(frag`${fragment.array(ops.map((op) => valueFragment(op)))}${full}`);\n }\n done();\n LOCAL_LOGGER.debug('-> pass0: out', body.value);\n } else {\n LOCAL_LOGGER.debug('-> pass0: error', body.reason);\n }\n }\n\n let template = body.mapOk(\n (body) => new mir.Template({ loc: root.loc, scope: root.table, body: body.toArray() })\n );\n\n if (isStrict) {\n template = template.andThen((template) => StrictModeValidationPass.validate(template));\n }\n\n return template;\n}\n","import type {\n CurriedType,\n Nullable,\n SerializedInlineBlock,\n SerializedTemplateBlock,\n WireFormat,\n} from '@glimmer/interfaces';\nimport { CURRIED_COMPONENT, CURRIED_HELPER, CURRIED_MODIFIER } from '@glimmer/constants';\nimport { exhausted } from '@glimmer/debug-util';\nimport { dict } from '@glimmer/util';\nimport { SexpOpcodes as Op } from '@glimmer/wire-format';\n\nimport { inflateAttrName, inflateTagName } from './utils';\n\nexport default class WireFormatDebugger {\n private upvars: string[];\n private symbols: string[];\n\n constructor([_statements, symbols, upvars]: SerializedTemplateBlock) {\n this.upvars = upvars;\n this.symbols = symbols;\n }\n\n format(program: SerializedTemplateBlock): unknown {\n let out = [];\n\n for (let statement of program[0]) {\n out.push(this.formatOpcode(statement));\n }\n\n return out;\n }\n\n formatOpcode(opcode: WireFormat.Syntax): unknown {\n if (Array.isArray(opcode)) {\n switch (opcode[0]) {\n case Op.Append:\n return ['append', this.formatOpcode(opcode[1])];\n case Op.TrustingAppend:\n return ['trusting-append', this.formatOpcode(opcode[1])];\n\n case Op.Block:\n return [\n 'block',\n this.formatOpcode(opcode[1]),\n this.formatParams(opcode[2]),\n this.formatHash(opcode[3]),\n this.formatBlocks(opcode[4]),\n ];\n\n case Op.InElement:\n return [\n 'in-element',\n opcode[1],\n this.formatOpcode(opcode[2]),\n opcode[3] ? this.formatOpcode(opcode[3]) : undefined,\n ];\n\n case Op.OpenElement:\n return ['open-element', inflateTagName(opcode[1])];\n\n case Op.OpenElementWithSplat:\n return ['open-element-with-splat', inflateTagName(opcode[1])];\n\n case Op.CloseElement:\n return ['close-element'];\n\n case Op.FlushElement:\n return ['flush-element'];\n\n case Op.StaticAttr:\n return ['static-attr', inflateAttrName(opcode[1]), opcode[2], opcode[3]];\n\n case Op.StaticComponentAttr:\n return ['static-component-attr', inflateAttrName(opcode[1]), opcode[2], opcode[3]];\n\n case Op.DynamicAttr:\n return [\n 'dynamic-attr',\n inflateAttrName(opcode[1]),\n this.formatOpcode(opcode[2]),\n opcode[3],\n ];\n\n case Op.ComponentAttr:\n return [\n 'component-attr',\n inflateAttrName(opcode[1]),\n this.formatOpcode(opcode[2]),\n opcode[3],\n ];\n\n case Op.AttrSplat:\n return ['attr-splat'];\n\n case Op.Yield:\n return ['yield', opcode[1], this.formatParams(opcode[2])];\n\n case Op.DynamicArg:\n return ['dynamic-arg', opcode[1], this.formatOpcode(opcode[2])];\n\n case Op.StaticArg:\n return ['static-arg', opcode[1], this.formatOpcode(opcode[2])];\n\n case Op.TrustingDynamicAttr:\n return [\n 'trusting-dynamic-attr',\n inflateAttrName(opcode[1]),\n this.formatOpcode(opcode[2]),\n opcode[3],\n ];\n\n case Op.TrustingComponentAttr:\n return [\n 'trusting-component-attr',\n inflateAttrName(opcode[1]),\n this.formatOpcode(opcode[2]),\n opcode[3],\n ];\n\n case Op.Debugger:\n return ['debugger', opcode[1]];\n\n case Op.Comment:\n return ['comment', opcode[1]];\n\n case Op.Modifier:\n return [\n 'modifier',\n this.formatOpcode(opcode[1]),\n this.formatParams(opcode[2]),\n this.formatHash(opcode[3]),\n ];\n\n case Op.Component:\n return [\n 'component',\n this.formatOpcode(opcode[1]),\n this.formatElementParams(opcode[2]),\n this.formatHash(opcode[3]),\n this.formatBlocks(opcode[4]),\n ];\n\n case Op.HasBlock:\n return ['has-block', this.formatOpcode(opcode[1])];\n\n case Op.HasBlockParams:\n return ['has-block-params', this.formatOpcode(opcode[1])];\n\n case Op.Curry:\n return [\n 'curry',\n this.formatOpcode(opcode[1]),\n this.formatCurryType(opcode[2]),\n this.formatParams(opcode[3]),\n this.formatHash(opcode[4]),\n ];\n\n case Op.Undefined:\n return ['undefined'];\n\n case Op.Call:\n return [\n 'call',\n this.formatOpcode(opcode[1]),\n this.formatParams(opcode[2]),\n this.formatHash(opcode[3]),\n ];\n\n case Op.Concat:\n return ['concat', this.formatParams(opcode[1] as WireFormat.Core.Params)];\n\n case Op.GetStrictKeyword:\n return ['get-strict-free', this.upvars[opcode[1]]];\n\n case Op.GetFreeAsComponentOrHelperHead:\n return ['GetFreeAsComponentOrHelperHead', this.upvars[opcode[1]], opcode[2]];\n\n case Op.GetFreeAsHelperHead:\n return ['GetFreeAsHelperHead', this.upvars[opcode[1]], opcode[2]];\n\n case Op.GetFreeAsComponentHead:\n return ['GetFreeAsComponentHead', this.upvars[opcode[1]], opcode[2]];\n\n case Op.GetFreeAsModifierHead:\n return ['GetFreeAsModifierHead', this.upvars[opcode[1]], opcode[2]];\n\n case Op.GetSymbol: {\n if (opcode[1] === 0) {\n return ['get-symbol', 'this', opcode[2]];\n } else {\n return ['get-symbol', this.symbols[opcode[1] - 1], opcode[2]];\n }\n }\n\n case Op.GetLexicalSymbol: {\n return ['get-template-symbol', opcode[1], opcode[2]];\n }\n\n case Op.If:\n return [\n 'if',\n this.formatOpcode(opcode[1]),\n this.formatBlock(opcode[2]),\n opcode[3] ? this.formatBlock(opcode[3]) : null,\n ];\n\n case Op.IfInline:\n return ['if-inline'];\n\n case Op.Not:\n return ['not'];\n\n case Op.Each:\n return [\n 'each',\n this.formatOpcode(opcode[1]),\n opcode[2] ? this.formatOpcode(opcode[2]) : null,\n this.formatBlock(opcode[3]),\n opcode[4] ? this.formatBlock(opcode[4]) : null,\n ];\n\n case Op.Let:\n return ['let', this.formatParams(opcode[1]), this.formatBlock(opcode[2])];\n\n case Op.Log:\n return ['log', this.formatParams(opcode[1])];\n\n case Op.WithDynamicVars:\n return ['-with-dynamic-vars', this.formatHash(opcode[1]), this.formatBlock(opcode[2])];\n\n case Op.GetDynamicVar:\n return ['-get-dynamic-vars', this.formatOpcode(opcode[1])];\n\n case Op.InvokeComponent:\n return [\n 'component',\n this.formatOpcode(opcode[1]),\n this.formatParams(opcode[2]),\n this.formatHash(opcode[3]),\n this.formatBlocks(opcode[4]),\n ];\n }\n } else {\n return opcode;\n }\n }\n\n private formatCurryType(value: CurriedType) {\n switch (value) {\n case CURRIED_COMPONENT:\n return 'component';\n case CURRIED_HELPER:\n return 'helper';\n case CURRIED_MODIFIER:\n return 'modifier';\n default:\n exhausted(value);\n }\n }\n\n private formatElementParams(\n opcodes: Nullable<WireFormat.ElementParameter[]>\n ): Nullable<unknown[]> {\n if (opcodes === null) return null;\n return opcodes.map((o) => this.formatOpcode(o));\n }\n\n private formatParams(opcodes: Nullable<WireFormat.Expression[]>): Nullable<unknown[]> {\n if (opcodes === null) return null;\n return opcodes.map((o) => this.formatOpcode(o));\n }\n\n private formatHash(hash: WireFormat.Core.Hash): Nullable<object> {\n if (hash === null) return null;\n\n return hash[0].reduce((accum, key, index) => {\n accum[key] = this.formatOpcode(hash[1][index]);\n return accum;\n }, dict());\n }\n\n private formatBlocks(blocks: WireFormat.Core.Blocks): Nullable<object> {\n if (blocks === null) return null;\n\n return blocks[0].reduce((accum, key, index) => {\n accum[key] = this.formatBlock(blocks[1][index] as SerializedInlineBlock);\n return accum;\n }, dict());\n }\n\n private formatBlock(block: SerializedInlineBlock): object {\n return {\n statements: block[0].map((s) => this.formatOpcode(s)),\n parameters: block[1],\n };\n }\n}\n","import type { PresentArray, WireFormat } from '@glimmer/interfaces';\nimport type { ASTv2 } from '@glimmer/syntax';\nimport {\n assertPresentArray,\n isPresentArray,\n localAssert,\n mapPresentArray,\n} from '@glimmer/debug-util';\nimport { SexpOpcodes } from '@glimmer/wire-format';\n\nimport type * as mir from './mir';\n\nexport type HashPair = [string, WireFormat.Expression];\n\nexport class ExpressionEncoder {\n expr(expr: mir.ExpressionNode): WireFormat.Expression {\n switch (expr.type) {\n case 'Missing':\n return undefined;\n case 'Literal':\n return this.Literal(expr);\n case 'Keyword':\n return this.Keyword(expr);\n case 'CallExpression':\n return this.CallExpression(expr);\n case 'PathExpression':\n return this.PathExpression(expr);\n case 'Arg':\n return [SexpOpcodes.GetSymbol, expr.symbol];\n case 'Local':\n return this.Local(expr);\n case 'This':\n return [SexpOpcodes.GetSymbol, 0];\n case 'Free':\n return [expr.resolution.resolution(), expr.symbol];\n case 'HasBlock':\n return this.HasBlock(expr);\n case 'HasBlockParams':\n return this.HasBlockParams(expr);\n case 'Curry':\n return this.Curry(expr);\n case 'Not':\n return this.Not(expr);\n case 'IfInline':\n return this.IfInline(expr);\n case 'InterpolateExpression':\n return this.InterpolateExpression(expr);\n case 'GetDynamicVar':\n return this.GetDynamicVar(expr);\n case 'Log':\n return this.Log(expr);\n }\n }\n\n Literal({\n value,\n }: ASTv2.LiteralExpression): WireFormat.Expressions.Value | WireFormat.Expressions.Undefined {\n if (value === undefined) {\n return [SexpOpcodes.Undefined];\n } else {\n return value;\n }\n }\n\n Missing(): undefined {\n return undefined;\n }\n\n HasBlock({ symbol }: mir.HasBlock): WireFormat.Expressions.HasBlock {\n return [SexpOpcodes.HasBlock, [SexpOpcodes.GetSymbol, symbol]];\n }\n\n HasBlockParams({ symbol }: mir.HasBlockParams): WireFormat.Expressions.HasBlockParams {\n return [SexpOpcodes.HasBlockParams, [SexpOpcodes.GetSymbol, symbol]];\n }\n\n Curry({ definition, curriedType, args }: mir.Curry): WireFormat.Expressions.Curry {\n return [\n SexpOpcodes.Curry,\n EXPR.expr(definition),\n curriedType,\n EXPR.Positional(args.positional),\n EXPR.NamedArguments(args.named),\n ];\n }\n\n Local({\n isTemplateLocal,\n symbol,\n }: ASTv2.LocalVarReference):\n | WireFormat.Expressions.GetSymbol\n | WireFormat.Expressions.GetLexicalSymbol {\n return [isTemplateLocal ? SexpOpcodes.GetLexicalSymbol : SexpOpcodes.GetSymbol, symbol];\n }\n\n Keyword({ symbol }: ASTv2.KeywordExpression): WireFormat.Expressions.GetStrictFree {\n return [SexpOpcodes.GetStrictKeyword, symbol];\n }\n\n PathExpression({ head, tail }: mir.PathExpression): WireFormat.Expressions.GetPath {\n let getOp = EXPR.expr(head) as WireFormat.Expressions.GetVar;\n localAssert(getOp[0] !== SexpOpcodes.GetStrictKeyword, '[BUG] keyword in a PathExpression');\n return [...getOp, EXPR.Tail(tail)];\n }\n\n InterpolateExpression({ parts }: mir.InterpolateExpression): WireFormat.Expressions.Concat {\n return [SexpOpcodes.Concat, parts.map((e) => EXPR.expr(e)).toArray()];\n }\n\n CallExpression({ callee, args }: mir.CallExpression): WireFormat.Expressions.Helper {\n return [SexpOpcodes.Call, EXPR.expr(callee), ...EXPR.Args(args)];\n }\n\n Tail({ members }: mir.Tail): PresentArray<string> {\n return mapPresentArray(members, (member) => member.chars);\n }\n\n Args({ positional, named }: mir.Args): WireFormat.Core.Args {\n return [this.Positional(positional), this.NamedArguments(named)];\n }\n\n Positional({ list }: mir.Positional): WireFormat.Core.Params {\n return list.map((l) => EXPR.expr(l)).toPresentArray();\n }\n\n NamedArgument({ key, value }: mir.NamedArgument): HashPair {\n return [key.chars, EXPR.expr(value)];\n }\n\n NamedArguments({ entries: pairs }: mir.NamedArguments): WireFormat.Core.Hash {\n let list = pairs.toArray();\n\n if (isPresentArray(list)) {\n let names: string[] = [];\n let values: WireFormat.Expression[] = [];\n\n for (let pair of list) {\n let [name, value] = EXPR.NamedArgument(pair);\n names.push(name);\n values.push(value);\n }\n\n assertPresentArray(names);\n assertPresentArray(values);\n\n return [names, values];\n } else {\n return null;\n }\n }\n\n Not({ value }: mir.Not): WireFormat.Expressions.Not {\n return [SexpOpcodes.Not, EXPR.expr(value)];\n }\n\n IfInline({ condition, truthy, falsy }: mir.IfInline): WireFormat.Expressions.IfInline {\n let expr = [SexpOpcodes.IfInline, EXPR.expr(condition), EXPR.expr(truthy)];\n\n if (falsy) {\n expr.push(EXPR.expr(falsy));\n }\n\n return expr as WireFormat.Expressions.IfInline;\n }\n\n GetDynamicVar({ name }: mir.GetDynamicVar): WireFormat.Expressions.GetDynamicVar {\n return [SexpOpcodes.GetDynamicVar, EXPR.expr(name)];\n }\n\n Log({ positional }: mir.Log): WireFormat.Expressions.Log {\n return [SexpOpcodes.Log, this.Positional(positional)];\n }\n}\n\nexport const EXPR = new ExpressionEncoder();\n","import type {\n AttrOpcode,\n ComponentAttrOpcode,\n DynamicAttrOpcode,\n StaticAttrOpcode,\n StaticComponentAttrOpcode,\n TrustingComponentAttrOpcode,\n TrustingDynamicAttrOpcode,\n WellKnownAttrName,\n WireFormat,\n} from '@glimmer/interfaces';\nimport { exhausted } from '@glimmer/debug-util';\nimport { LOCAL_TRACE_LOGGING } from '@glimmer/local-debug-flags';\nimport { LOCAL_LOGGER } from '@glimmer/util';\nimport { SexpOpcodes } from '@glimmer/wire-format';\n\nimport type { OptionalList } from '../../shared/list';\nimport type * as mir from './mir';\n\nimport { deflateAttrName, deflateTagName } from '../../utils';\nimport { EXPR } from './expressions';\n\nclass WireStatements<S extends WireFormat.Statement = WireFormat.Statement> {\n constructor(private statements: readonly S[]) {}\n\n toArray(): readonly S[] {\n return this.statements;\n }\n}\n\nexport class ContentEncoder {\n list(statements: mir.Statement[]): WireFormat.Statement[] {\n let out: WireFormat.Statement[] = [];\n\n for (let statement of statements) {\n let result = CONTENT.content(statement);\n\n if (result instanceof WireStatements) {\n out.push(...result.toArray());\n } else {\n out.push(result);\n }\n }\n\n return out;\n }\n\n content(stmt: mir.Statement): WireFormat.Statement | WireStatements {\n if (LOCAL_TRACE_LOGGING) {\n LOCAL_LOGGER.debug(`encoding`, stmt);\n }\n\n return this.visitContent(stmt);\n }\n\n private visitContent(stmt: mir.Statement): WireFormat.Statement | WireStatements {\n switch (stmt.type) {\n case 'Debugger':\n return [SexpOpcodes.Debugger, ...stmt.scope.getDebugInfo(), {}];\n case 'AppendComment':\n return this.AppendComment(stmt);\n case 'AppendTextNode':\n return this.AppendTextNode(stmt);\n case 'AppendTrustedHTML':\n return this.AppendTrustedHTML(stmt);\n case 'Yield':\n return this.Yield(stmt);\n case 'Component':\n return this.Component(stmt);\n case 'SimpleElement':\n return this.SimpleElement(stmt);\n case 'InElement':\n return this.InElement(stmt);\n case 'InvokeBlock':\n return this.InvokeBlock(stmt);\n case 'If':\n return this.If(stmt);\n case 'Each':\n return this.Each(stmt);\n case 'Let':\n return this.Let(stmt);\n case 'WithDynamicVars':\n return this.WithDynamicVars(stmt);\n case 'InvokeComponent':\n return this.InvokeComponent(stmt);\n default:\n return exhausted(stmt);\n }\n }\n\n Yield({ to, positional }: mir.Yield): WireFormat.Statements.Yield {\n return [SexpOpcodes.Yield, to, EXPR.Positional(positional)];\n }\n\n InElement({\n guid,\n insertBefore,\n destination,\n block,\n }: mir.InElement): WireFormat.Statements.InElement {\n let wireBlock = CONTENT.NamedBlock(block)[1];\n // let guid = args.guid;\n let wireDestination = EXPR.expr(destination);\n let wireInsertBefore = EXPR.expr(insertBefore);\n\n if (wireInsertBefore === undefined) {\n return [SexpOpcodes.InElement, wireBlock, guid, wireDestination];\n } else {\n return [SexpOpcodes.InElement, wireBlock, guid, wireDestination, wireInsertBefore];\n }\n }\n\n InvokeBlock({ head, args, blocks }: mir.InvokeBlock): WireFormat.Statements.Block {\n return [SexpOpcodes.Block, EXPR.expr(head), ...EXPR.Args(args), CONTENT.NamedBlocks(blocks)];\n }\n\n AppendTrustedHTML({ html }: mir.AppendTrustedHTML): WireFormat.Statements.TrustingAppend {\n return [SexpOpcodes.TrustingAppend, EXPR.expr(html)];\n }\n\n AppendTextNode({ text }: mir.AppendTextNode): WireFormat.Statements.Append {\n return [SexpOpcodes.Append, EXPR.expr(text)];\n }\n\n AppendComment({ value }: mir.AppendComment): WireFormat.Statements.Comment {\n return [SexpOpcodes.Comment, value.chars];\n }\n\n SimpleElement({ tag, params, body, dynamicFeatures }: mir.SimpleElement): WireStatements {\n let op = dynamicFeatures ? SexpOpcodes.OpenElementWithSplat : SexpOpcodes.OpenElement;\n return new WireStatements<WireFormat.Statement | WireFormat.ElementParameter>([\n [op, deflateTagName(tag.chars)],\n ...CONTENT.ElementParameters(params).toArray(),\n [SexpOpcodes.FlushElement],\n ...CONTENT.list(body),\n [SexpOpcodes.CloseElement],\n ]);\n }\n\n Component({ tag, params, args, blocks }: mir.Component): WireFormat.Statements.Component {\n let wireTag = EXPR.expr(tag);\n let wirePositional = CONTENT.ElementParameters(params);\n let wireNamed = EXPR.NamedArguments(args);\n\n let wireNamedBlocks = CONTENT.NamedBlocks(blocks);\n\n return [\n SexpOpcodes.Component,\n wireTag,\n wirePositional.toPresentArray(),\n wireNamed,\n wireNamedBlocks,\n ];\n }\n\n ElementParameters({ body }: mir.ElementParameters): OptionalList<WireFormat.ElementParameter> {\n return body.map((p) => CONTENT.ElementParameter(p));\n }\n\n ElementParameter(param: mir.ElementParameter): WireFormat.ElementParameter {\n switch (param.type) {\n case 'SplatAttr':\n return [SexpOpcodes.AttrSplat, param.symbol];\n case 'DynamicAttr':\n return [dynamicAttrOp(param.kind), ...dynamicAttr(param)];\n case 'StaticAttr':\n return [staticAttrOp(param.kind), ...staticAttr(param)];\n case 'Modifier':\n return [SexpOpcodes.Modifier, EXPR.expr(param.callee), ...EXPR.Args(param.args)];\n }\n }\n\n NamedBlocks({ blocks }: mir.NamedBlocks): WireFormat.Core.Blocks {\n let names: string[] = [];\n let serializedBlocks: WireFormat.SerializedInlineBlock[] = [];\n\n for (let block of blocks.toArray()) {\n let [name, serializedBlock] = CONTENT.NamedBlock(block);\n\n names.push(name);\n serializedBlocks.push(serializedBlock);\n }\n\n return names.length > 0 ? [names, serializedBlocks] : null;\n }\n\n NamedBlock({ name, body, scope }: mir.NamedBlock): WireFormat.Core.NamedBlock {\n let nameChars = name.chars;\n if (nameChars === 'inverse') {\n nameChars = 'else';\n }\n return [nameChars, [CONTENT.list(body), scope.slots]];\n }\n\n If({ condition, block, inverse }: mir.If): WireFormat.Statements.If {\n return [\n SexpOpcodes.If,\n EXPR.expr(condition),\n CONTENT.NamedBlock(block)[1],\n inverse ? CONTENT.NamedBlock(inverse)[1] : null,\n ];\n }\n\n Each({ value, key, block, inverse }: mir.Each): WireFormat.Statements.Each {\n return [\n SexpOpcodes.Each,\n EXPR.expr(value),\n key ? EXPR.expr(key) : null,\n CONTENT.NamedBlock(block)[1],\n inverse ? CONTENT.NamedBlock(inverse)[1] : null,\n ];\n }\n\n Let({ positional, block }: mir.Let): WireFormat.Statements.Let {\n return [SexpOpcodes.Let, EXPR.Positional(positional), CONTENT.NamedBlock(block)[1]];\n }\n\n WithDynamicVars({ named, block }: mir.WithDynamicVars): WireFormat.Statements.WithDynamicVars {\n return [SexpOpcodes.WithDynamicVars, EXPR.NamedArguments(named), CONTENT.NamedBlock(block)[1]];\n }\n\n InvokeComponent({\n definition,\n args,\n blocks,\n }: mir.InvokeComponent): WireFormat.Statements.InvokeComponent {\n return [\n SexpOpcodes.InvokeComponent,\n EXPR.expr(definition),\n EXPR.Positional(args.positional),\n EXPR.NamedArguments(args.named),\n blocks ? CONTENT.NamedBlocks(blocks) : null,\n ];\n }\n}\n\nexport const CONTENT = new ContentEncoder();\n\nexport type StaticAttrArgs = [name: string | WellKnownAttrName, value: string, namespace?: string];\n\nfunction staticAttr({ name, value, namespace }: mir.StaticAttr): StaticAttrArgs {\n let out: StaticAttrArgs = [deflateAttrName(name.chars), value.chars];\n\n if (namespace) {\n out.push(namespace);\n }\n\n return out;\n}\n\nexport type DynamicAttrArgs = [\n name: string | WellKnownAttrName,\n value: WireFormat.Expression,\n namespace?: string,\n];\n\nfunction dynamicAttr({ name, value, namespace }: mir.DynamicAttr): DynamicAttrArgs {\n let out: DynamicAttrArgs = [deflateAttrName(name.chars), EXPR.expr(value)];\n\n if (namespace) {\n out.push(namespace);\n }\n\n return out;\n}\n\nfunction staticAttrOp(kind: { component: boolean }): StaticAttrOpcode | StaticComponentAttrOpcode;\nfunction staticAttrOp(kind: { component: boolean }): AttrOpcode {\n if (kind.component) {\n return SexpOpcodes.StaticComponentAttr;\n } else {\n return SexpOpcodes.StaticAttr;\n }\n}\n\nfunction dynamicAttrOp(\n kind: mir.AttrKind\n):\n | TrustingComponentAttrOpcode\n | TrustingDynamicAttrOpcode\n | ComponentAttrOpcode\n | DynamicAttrOpcode {\n if (kind.component) {\n return kind.trusting ? SexpOpcodes.TrustingComponentAttr : SexpOpcodes.ComponentAttr;\n } else {\n return kind.trusting ? SexpOpcodes.TrustingDynamicAttr : SexpOpcodes.DynamicAttr;\n }\n}\n","import type { WireFormat } from '@glimmer/interfaces';\nimport { LOCAL_TRACE_LOGGING } from '@glimmer/local-debug-flags';\nimport { LOCAL_LOGGER } from '@glimmer/util';\n\nimport type * as mir from './mir';\n\nimport WireFormatDebugger from '../../wire-format-debug';\nimport { CONTENT } from './content';\n\nexport function visit(template: mir.Template): WireFormat.SerializedTemplateBlock {\n let statements = CONTENT.list(template.body);\n let scope = template.scope;\n let block: WireFormat.SerializedTemplateBlock = [statements, scope.symbols, scope.upvars];\n\n if (LOCAL_TRACE_LOGGING) {\n let debug = new WireFormatDebugger(block);\n LOCAL_LOGGER.debug(\n `-> `,\n statements.map((s) => debug.formatOpcode(s))\n );\n }\n\n return block;\n}\n","import type {\n Nullable,\n SerializedTemplateBlock,\n SerializedTemplateWithLazyBlock,\n TemplateJavascript,\n} from '@glimmer/interfaces';\nimport type {\n PrecompileOptions,\n PrecompileOptionsWithLexicalScope,\n TemplateIdFn,\n} from '@glimmer/syntax';\nimport { LOCAL_TRACE_LOGGING } from '@glimmer/local-debug-flags';\nimport { normalize, src } from '@glimmer/syntax';\nimport { LOCAL_LOGGER } from '@glimmer/util';\n\nimport pass0 from './passes/1-normalization/index';\nimport { visit as pass2 } from './passes/2-encoding/index';\n\ndeclare function require(id: 'crypto'): Crypto;\ndeclare function require(id: string): unknown;\n\ninterface Crypto {\n createHash(alg: 'sha1'): {\n update(src: string, encoding: 'utf8'): void;\n digest(encoding: 'base64'): string;\n };\n}\n\nexport const defaultId: TemplateIdFn = (() => {\n /* prettier-ignore */\n const req = (\n // @ts-expect-error using node API here, but only here\n typeof module === 'object' && typeof module.require === 'function'\n ? // @ts-expect-error using node API here, but only here\n module.require\n : (globalThis as any).require\n ) as typeof require | undefined;\n\n if (req) {\n try {\n const crypto = req('crypto');\n\n const idFn: TemplateIdFn = (src) => {\n const hash = crypto.createHash('sha1');\n hash.update(src, 'utf8');\n // trim to 6 bytes of data (2^48 - 1)\n return hash.digest('base64').substring(0, 8);\n };\n\n idFn('test');\n\n return idFn;\n } catch {\n // do nothing\n }\n }\n\n return function idFn() {\n return null;\n };\n})();\n\nconst defaultOptions: PrecompileOptions = {\n id: defaultId,\n};\n\n/*\n * Compile a string into a template javascript string.\n *\n * Example usage:\n * import { precompile } from '@glimmer/compiler';\n * import { templateFactory } from 'glimmer-runtime';\n * let templateJs = precompile(\"Howdy {{name}}\");\n * let factory = templateFactory(new Function(\"return \" + templateJs)());\n * let template = factory.create(env);\n *\n * @method precompile\n * @param {string} string a Glimmer template string\n * @return {string} a template javascript string\n */\nexport function precompileJSON(\n string: Nullable<string>,\n options: PrecompileOptions | PrecompileOptionsWithLexicalScope = defaultOptions\n): [block: SerializedTemplateBlock, usedLocals: string[]] {\n const source = new src.Source(string ?? '', options.meta?.moduleName);\n const [ast, locals] = normalize(source, { lexicalScope: () => false, ...options });\n const block = pass0(source, ast, options.strictMode ?? false).mapOk((pass2In) => {\n return pass2(pass2In);\n });\n\n if (LOCAL_TRACE_LOGGING) {\n LOCAL_LOGGER.debug(`Template ->`, block);\n }\n\n if (block.isOk) {\n return [block.value, locals];\n } else {\n throw block.reason;\n }\n}\n\n// UUID used as a unique placeholder for placing a snippet of JS code into\n// the otherwise JSON stringified value below.\nconst SCOPE_PLACEHOLDER = '796d24e6-2450-4fb0-8cdf-b65638b5ef70';\n\n/*\n * Compile a string into a template javascript string.\n *\n * Example usage:\n * import { precompile } from '@glimmer/compiler';\n * import { templateFactory } from 'glimmer-runtime';\n * let templateJs = precompile(\"Howdy {{name}}\");\n * let factory = templateFactory(new Function(\"return \" + templateJs)());\n * let template = factory.create(env);\n *\n * @method precompile\n * @param {string} string a Glimmer template string\n * @return {string} a template javascript string\n */\nexport function precompile(\n source: string,\n options: PrecompileOptions | PrecompileOptionsWithLexicalScope = defaultOptions\n): TemplateJavascript {\n const [block, usedLocals] = precompileJSON(source, options);\n\n if ('emit' in options && options.emit?.debugSymbols && usedLocals.length > 0) {\n block.push(usedLocals);\n }\n\n const moduleName = options.meta?.moduleName;\n const idFn = options.id || defaultId;\n const blockJSON = JSON.stringify(block);\n const templateJSONObject: SerializedTemplateWithLazyBlock = {\n id: idFn(JSON.stringify(options.meta) + blockJSON),\n block: blockJSON,\n moduleName: moduleName ?? '(unknown template module)',\n // lying to the type checker here because we're going to\n // replace it just below, after stringification\n scope: SCOPE_PLACEHOLDER as unknown as null,\n isStrictMode: options.strictMode ?? false,\n };\n\n if (usedLocals.length === 0) {\n delete templateJSONObject.scope;\n }\n\n // JSON is javascript\n let stringified = JSON.stringify(templateJSONObject);\n\n if (usedLocals.length > 0) {\n const scopeFn = `()=>[${usedLocals.join(',')}]`;\n\n stringified = stringified.replace(`\"${SCOPE_PLACEHOLDER}\"`, scopeFn);\n }\n\n return stringified;\n}\n\nexport type { PrecompileOptions };\n","export const DEBUG = false;\nexport const CI = false;\n","// this file gets replaced with the real value during the build\nexport default '6.12.0-beta.3' as string;\n","import type { AST } from '@glimmer/syntax';\n\nexport default function calculateLocationDisplay(\n moduleName: string | undefined,\n loc?: AST.SourceLocation | undefined\n): string {\n let moduleInfo = '';\n if (moduleName) {\n moduleInfo += `'${moduleName}' `;\n }\n\n if (loc) {\n let { column, line } = loc.start || { line: undefined, column: undefined };\n if (line !== undefined && column !== undefined) {\n if (moduleName) {\n // only prepend @ if the moduleName was present\n moduleInfo += '@ ';\n }\n moduleInfo += `L${line}:C${column}`;\n }\n }\n\n if (moduleInfo) {\n moduleInfo = `(${moduleInfo}) `;\n }\n\n return moduleInfo;\n}\n","import type { AST } from '@glimmer/syntax';\nimport type { EmberASTPluginEnvironment } from '../types';\n\nexport function isPath(node: AST.Node): node is AST.PathExpression {\n return node.type === 'PathExpression';\n}\n\nexport function isSubExpression(node: AST.Node): node is AST.SubExpression {\n return node.type === 'SubExpression';\n}\n\nexport function isStringLiteral(node: AST.Expression): node is AST.StringLiteral {\n return node.type === 'StringLiteral';\n}\n\nexport function inScope(env: EmberASTPluginEnvironment, name: string): boolean {\n return Boolean(env.lexicalScope?.(name));\n}\n\nfunction getLocalName(node: string | AST.VarHead): string {\n if (typeof node === 'string') {\n return node;\n } else {\n return node.original;\n }\n}\n\nexport function trackLocals(env: EmberASTPluginEnvironment) {\n let locals = new Map();\n\n let node = {\n enter(node: AST.Template | AST.Block | AST.ElementNode) {\n let params = 'params' in node ? node.params : node.blockParams;\n for (let param of params) {\n let name = getLocalName(param);\n let value = locals.get(param) || 0;\n locals.set(name, value + 1);\n }\n },\n\n exit(node: AST.Template | AST.Block | AST.ElementNode) {\n let params = 'params' in node ? node.params : node.blockParams;\n for (let param of params) {\n let name = getLocalName(param);\n let value = locals.get(name) - 1;\n\n if (value === 0) {\n locals.delete(name);\n } else {\n locals.set(name, value);\n }\n }\n },\n };\n\n return {\n hasLocal: (key: string) => locals.has(key) || inScope(env, key),\n node,\n visitor: {\n Template: node,\n ElementNode: node,\n Block: node,\n },\n };\n}\n","import { assert, deprecate } from '@ember/debug';\nimport type { AST, ASTPlugin } from '@glimmer/syntax';\nimport calculateLocationDisplay from '../system/calculate-location-display';\nimport type { EmberASTPluginEnvironment } from '../types';\nimport { trackLocals } from './utils';\n\n/**\n @module ember\n*/\n\n/**\n A Glimmer2 AST transformation that asserts against\n\n ```handlebars\n {{attrs.foo.bar}}\n ```\n\n ...as well as `{{#if attrs.foo}}`, `{{deeply (nested attrs.foobar.baz)}}`.\n\n @private\n @class AssertAgainstAttrs\n*/\n\nexport default function assertAgainstAttrs(env: EmberASTPluginEnvironment): ASTPlugin {\n let { builders: b } = env.syntax;\n let moduleName = env.meta?.moduleName;\n let { hasLocal, visitor } = trackLocals(env);\n\n return {\n name: 'assert-against-attrs',\n\n visitor: {\n ...visitor,\n\n PathExpression(node: AST.PathExpression): AST.Node | void {\n if (isAttrs(node, hasLocal)) {\n assert(\n `Using {{attrs}} to reference named arguments is not supported. {{${\n node.original\n }}} should be updated to {{@${node.original.slice(6)}}}. ${calculateLocationDisplay(\n moduleName,\n node.loc\n )}`\n );\n } else if (isThisDotAttrs(node)) {\n // When removing this, ensure `{{this.attrs.foo}}` is left as-is, without triggering\n // any assertions/deprecations. It's perfectly legal to reference `{{this.attrs.foo}}`\n // in the template since it is a real property on the backing class – it will give you\n // a `MutableCell` wrapper object, but maybe that's what you want. And in any case,\n // there is no compelling to special case that property access.\n deprecate(\n `Using {{this.attrs}} to reference named arguments has been deprecated. {{${\n node.original\n }}} should be updated to {{@${node.original.slice(11)}}}. ${calculateLocationDisplay(\n moduleName,\n node.loc\n )}`,\n false,\n {\n id: 'attrs-arg-access',\n url: 'https://deprecations.emberjs.com/v3.x/#toc_attrs-arg-access',\n until: '6.0.0',\n for: 'ember-source',\n since: {\n available: '3.26.0',\n enabled: '3.26.0',\n },\n }\n );\n\n return b.path(`@${node.original.slice(11)}`, node.loc);\n }\n },\n },\n };\n}\n\nfunction isAttrs(node: AST.PathExpression, hasLocal: (k: string) => boolean) {\n return node.head.type === 'VarHead' && node.head.name === 'attrs' && !hasLocal(node.head.name);\n}\n\nfunction isThisDotAttrs(node: AST.PathExpression) {\n return node.head.type === 'ThisHead' && node.tail[0] === 'attrs';\n}\n","import { assert } from '@ember/debug';\nimport type { AST, ASTPlugin } from '@glimmer/syntax';\nimport calculateLocationDisplay from '../system/calculate-location-display';\nimport type { EmberASTPluginEnvironment } from '../types';\nimport { trackLocals } from './utils';\n\n/**\n @module ember\n*/\n\n/**\n Prevents usage of named outlets, a legacy concept in Ember removed in 4.0.\n\n @private\n @class AssertAgainstNamedOutlets\n*/\nexport default function assertAgainstNamedOutlets(env: EmberASTPluginEnvironment): ASTPlugin {\n let moduleName = env.meta?.moduleName;\n let { hasLocal, visitor } = trackLocals(env);\n\n return {\n name: 'assert-against-named-outlets',\n\n visitor: {\n ...visitor,\n MustacheStatement(node: AST.MustacheStatement) {\n if (\n node.path.type === 'PathExpression' &&\n node.path.original === 'outlet' &&\n node.params[0] &&\n !hasLocal('outlet')\n ) {\n let sourceInformation = calculateLocationDisplay(moduleName, node.loc);\n assert(\n `Named outlets were removed in Ember 4.0. See https://deprecations.emberjs.com/v3.x#toc_route-render-template for guidance on alternative APIs for named outlet use cases. ${sourceInformation}`\n );\n }\n },\n },\n };\n}\n","import { assert } from '@ember/debug';\nimport type { AST, ASTPlugin } from '@glimmer/syntax';\nimport calculateLocationDisplay from '../system/calculate-location-display';\nimport type { EmberASTPluginEnvironment } from '../types';\nimport { isPath, trackLocals } from './utils';\n\nexport default function errorOnInputWithContent(env: EmberASTPluginEnvironment): ASTPlugin {\n let moduleName = env.meta?.moduleName;\n let { hasLocal, visitor } = trackLocals(env);\n\n return {\n name: 'assert-input-helper-without-block',\n\n visitor: {\n ...visitor,\n BlockStatement(node: AST.BlockStatement) {\n if (hasLocal('input')) return;\n\n if (isPath(node.path) && node.path.original === 'input') {\n assert(assertMessage(moduleName, node));\n }\n },\n },\n };\n}\n\nfunction assertMessage(moduleName: string | undefined, node: AST.BlockStatement): string {\n let sourceInformation = calculateLocationDisplay(moduleName, node.loc);\n\n return `The {{input}} helper cannot be used in block form. ${sourceInformation}`;\n}\n","import { assert } from '@ember/debug';\nimport type { AST, ASTPlugin } from '@glimmer/syntax';\nimport calculateLocationDisplay from '../system/calculate-location-display';\nimport type { EmberASTPluginEnvironment } from '../types';\n\nexport default function assertReservedNamedArguments(env: EmberASTPluginEnvironment): ASTPlugin {\n let moduleName = env.meta?.moduleName;\n\n return {\n name: 'assert-reserved-named-arguments',\n\n visitor: {\n // In general, we don't assert on the invocation side to avoid creating migration\n // hazards (e.g. using angle bracket to invoke a classic component that uses\n // `this.someReservedName`. However, we want to avoid leaking special internal\n // things, such as `__ARGS__`, so those would need to be asserted on both sides.\n\n AttrNode({ name, loc }: AST.AttrNode) {\n if (name === '@__ARGS__') {\n assert(`${assertMessage(name)} ${calculateLocationDisplay(moduleName, loc)}`);\n }\n },\n\n HashPair({ key, loc }: AST.HashPair) {\n if (key === '__ARGS__') {\n assert(`${assertMessage(key)} ${calculateLocationDisplay(moduleName, loc)}`);\n }\n },\n\n PathExpression({ original, loc }: AST.PathExpression) {\n if (isReserved(original)) {\n assert(`${assertMessage(original)} ${calculateLocationDisplay(moduleName, loc)}`);\n }\n },\n },\n };\n}\n\nconst RESERVED = ['@arguments', '@args', '@block', '@else'];\n\nfunction isReserved(name: string): boolean {\n return RESERVED.indexOf(name) !== -1 || Boolean(name.match(/^@[^a-z]/));\n}\n\nfunction assertMessage(name: string): string {\n return `'${name}' is reserved.`;\n}\n","import type { AST, ASTPlugin } from '@glimmer/syntax';\nimport type { Builders, EmberASTPluginEnvironment } from '../types';\nimport { isPath, trackLocals } from './utils';\n\n/**\n @module ember\n*/\n\n/**\n A Glimmer2 AST transformation that replaces all instances of\n\n ```handlebars\n <button {{action 'foo'}}>\n <button onblur={{action 'foo'}}>\n <button onblur={{action (action 'foo') 'bar'}}>\n ```\n\n with\n\n ```handlebars\n <button {{action this 'foo'}}>\n <button onblur={{action this 'foo'}}>\n <button onblur={{action this (action this 'foo') 'bar'}}>\n ```\n\n @private\n @class TransformActionSyntax\n*/\n\nexport default function transformActionSyntax(env: EmberASTPluginEnvironment): ASTPlugin {\n let { builders: b } = env.syntax;\n let { hasLocal, visitor } = trackLocals(env);\n\n return {\n name: 'transform-action-syntax',\n\n visitor: {\n ...visitor,\n ElementModifierStatement(node: AST.ElementModifierStatement) {\n if (isAction(node, hasLocal)) {\n insertThisAsFirstParam(node, b);\n }\n },\n\n MustacheStatement(node: AST.MustacheStatement) {\n if (isAction(node, hasLocal)) {\n insertThisAsFirstParam(node, b);\n }\n },\n\n SubExpression(node: AST.SubExpression) {\n if (isAction(node, hasLocal)) {\n insertThisAsFirstParam(node, b);\n }\n },\n },\n };\n}\n\nfunction isAction(\n node: AST.ElementModifierStatement | AST.MustacheStatement | AST.SubExpression,\n hasLocal: (k: string) => boolean\n) {\n return isPath(node.path) && node.path.original === 'action' && !hasLocal('action');\n}\n\nfunction insertThisAsFirstParam(\n node: AST.ElementModifierStatement | AST.MustacheStatement | AST.SubExpression,\n builders: Builders\n) {\n node.params.unshift(builders.path('this'));\n}\n","import type { AST, ASTPlugin } from '@glimmer/syntax';\nimport type { EmberASTPluginEnvironment } from '../types';\nimport { isPath } from './utils';\n\n/**\n @module ember\n*/\n\n/**\n A Glimmer2 AST transformation that replaces all instances of\n\n ```handlebars\n {{#each-in iterableThing as |key value|}}\n ```\n\n with\n\n ```handlebars\n {{#each (-each-in iterableThing) as |value key|}}\n ```\n\n @private\n @class TransformHasBlockSyntax\n*/\nexport default function transformEachInIntoEach(env: EmberASTPluginEnvironment): ASTPlugin {\n let { builders: b } = env.syntax;\n\n return {\n name: 'transform-each-in-into-each',\n\n visitor: {\n BlockStatement(node: AST.BlockStatement): AST.Node | void {\n if (isPath(node.path) && node.path.original === 'each-in') {\n node.params[0] = b.sexpr(b.path('-each-in'), [node.params[0]!]);\n\n let blockParams = node.program.blockParams;\n\n if (!blockParams || blockParams.length === 0) {\n // who uses {{#each-in}} without block params?!\n } else if (blockParams.length === 1) {\n // insert a dummy variable for the first slot\n // pick a name that won't parse so it won't shadow any real variables\n blockParams = ['( unused value )', blockParams[0]!];\n } else {\n let key = blockParams.shift()!;\n let value = blockParams.shift()!;\n blockParams = [value, key, ...blockParams];\n }\n\n node.program.blockParams = blockParams;\n\n return b.block(\n b.path('each'),\n node.params,\n node.hash,\n node.program,\n node.inverse,\n node.loc\n );\n }\n },\n },\n };\n}\n","import type { AST, ASTPlugin } from '@glimmer/syntax';\nimport { assert } from '@ember/debug';\nimport type { EmberASTPluginEnvironment } from '../types';\nimport { isPath, trackLocals } from './utils';\n\n/**\n @module ember\n*/\n\n/**\n A Glimmer2 AST transformation that replaces all instances of\n\n ```handlebars\n {{#each iterableThing as |key value|}}\n ```\n\n with\n\n ```handlebars\n {{#each (-track-array iterableThing) as |key value|}}\n ```\n\n @private\n @class TransformHasBlockSyntax\n*/\nexport default function transformEachTrackArray(env: EmberASTPluginEnvironment): ASTPlugin {\n let { builders: b } = env.syntax;\n let { hasLocal, visitor } = trackLocals(env);\n\n return {\n name: 'transform-each-track-array',\n\n visitor: {\n ...visitor,\n BlockStatement(node: AST.BlockStatement): AST.Node | void {\n if (isPath(node.path) && node.path.original === 'each' && !hasLocal('each')) {\n let firstParam = node.params[0];\n assert('has firstParam', firstParam);\n\n if (\n firstParam.type === 'SubExpression' &&\n firstParam.path.type === 'PathExpression' &&\n firstParam.path.original === '-each-in'\n ) {\n return;\n }\n\n node.params[0] = b.sexpr(b.path('-track-array'), [firstParam]);\n\n return b.block(\n b.path('each'),\n node.params,\n node.hash,\n node.program,\n node.inverse,\n node.loc\n );\n }\n },\n },\n };\n}\n","import { assert } from '@ember/debug';\nimport type { AST, ASTPlugin } from '@glimmer/syntax';\nimport type { EmberASTPluginEnvironment } from '../types';\nimport { isPath } from './utils';\n\n/**\n @module ember\n*/\n\n/**\n A Glimmer2 AST transformation that handles the public `{{in-element}}` as per RFC287.\n\n Issues a build time assertion for:\n\n ```handlebars\n {{#in-element someElement insertBefore=\"some-none-null-value\"}}\n {{modal-display text=text}}\n {{/in-element}}\n ```\n\n @private\n @class TransformInElement\n*/\nexport default function transformInElement(env: EmberASTPluginEnvironment): ASTPlugin {\n let { builders: b } = env.syntax;\n\n return {\n name: 'transform-in-element',\n\n visitor: {\n BlockStatement(node: AST.BlockStatement) {\n if (!isPath(node.path)) return;\n\n if (node.path.original === 'in-element') {\n let originalValue = node.params[0];\n\n if (originalValue && !env.isProduction) {\n let subExpr = b.sexpr('-in-el-null', [originalValue]);\n\n node.params.shift();\n node.params.unshift(subExpr);\n }\n\n node.hash.pairs.forEach((pair) => {\n if (pair.key === 'insertBefore') {\n assert(\n `Can only pass null to insertBefore in in-element, received: ${JSON.stringify(\n pair.value\n )}`,\n pair.value.type === 'NullLiteral' || pair.value.type === 'UndefinedLiteral'\n );\n }\n });\n }\n },\n },\n };\n}\n","import type { AST, ASTPlugin } from '@glimmer/syntax';\n\nexport default function transformQuotedBindingsIntoJustBindings(/* env */): ASTPlugin {\n return {\n name: 'transform-quoted-bindings-into-just-bindings',\n\n visitor: {\n ElementNode(node: AST.ElementNode) {\n let styleAttr = getStyleAttr(node);\n\n if (!validStyleAttr(styleAttr)) {\n return;\n }\n\n styleAttr!.value = (styleAttr!.value as AST.ConcatStatement).parts[0];\n },\n },\n };\n}\n\nfunction validStyleAttr(attr: AST.AttrNode | undefined) {\n if (!attr) {\n return false;\n }\n\n let value = attr.value;\n\n if (!value || value.type !== 'ConcatStatement' || value.parts.length !== 1) {\n return false;\n }\n\n let onlyPart = value.parts[0];\n\n return onlyPart.type === 'MustacheStatement';\n}\n\nfunction getStyleAttr(node: AST.ElementNode): AST.AttrNode | undefined {\n let attributes = node.attributes;\n\n for (let attribute of attributes) {\n if (attribute.name === 'style') {\n return attribute;\n }\n }\n return undefined;\n}\n","import { assert } from '@ember/debug';\nimport { DEBUG } from '@glimmer/env';\nimport type { AST, ASTPlugin } from '@glimmer/syntax';\nimport { print } from '@glimmer/syntax';\nimport calculateLocationDisplay from '../system/calculate-location-display';\nimport type { EmberASTPluginEnvironment } from '../types';\nimport { isPath, isStringLiteral, trackLocals } from './utils';\n\n/**\n @module ember\n*/\n\n/**\n A Glimmer2 AST transformation that replaces all instances of\n\n ```handlebars\n {{helper \"...\" ...}}\n ```\n\n with\n\n ```handlebars\n {{helper (-resolve \"helper:...\") ...}}\n ```\n\n and\n\n ```handlebars\n {{helper ... ...}}\n ```\n\n with\n\n ```handlebars\n {{helper (-disallow-dynamic-resolution ...) ...}}\n ```\n\n and\n\n ```handlebars\n {{modifier \"...\" ...}}\n ```\n\n with\n\n ```handlebars\n {{modifier (-resolve \"modifier:...\") ...}}\n ```\n and\n\n ```handlebars\n {{modifier ... ...}}\n ```\n\n with\n\n ```handlebars\n {{modifier (-disallow-dynamic-resolution ...) ...}}\n ```\n\n @private\n @class TransformResolutions\n*/\n\nconst TARGETS = Object.freeze(['helper', 'modifier']);\n\nexport default function transformResolutions(env: EmberASTPluginEnvironment): ASTPlugin {\n let { builders: b } = env.syntax;\n let moduleName = env.meta?.moduleName;\n let { hasLocal, node: tracker } = trackLocals(env);\n let seen: Set<AST.Node> | undefined;\n\n return {\n name: 'transform-resolutions',\n\n visitor: {\n Template: {\n enter() {\n seen = new Set();\n },\n\n exit() {\n seen = undefined;\n },\n },\n\n Block: tracker,\n\n ElementNode: {\n keys: {\n children: tracker,\n },\n },\n\n MustacheStatement(node: AST.MustacheStatement): AST.Node | void {\n assert('[BUG] seen set should be available', seen);\n\n if (seen.has(node)) {\n return;\n }\n\n if (\n isPath(node.path) &&\n !isLocalVariable(node.path, hasLocal) &&\n TARGETS.indexOf(node.path.original) !== -1\n ) {\n let result = b.mustache(\n node.path,\n transformParams(b, node.params, node.path.original, moduleName, node.loc),\n node.hash,\n node.trusting,\n node.loc,\n node.strip\n );\n\n // Avoid double/infinite-processing\n seen.add(result);\n\n return result;\n }\n },\n SubExpression(node: AST.SubExpression): AST.Node | void {\n assert('[BUG] seen set should be available', seen);\n\n if (seen.has(node)) {\n return;\n }\n\n if (\n isPath(node.path) &&\n !isLocalVariable(node.path, hasLocal) &&\n TARGETS.indexOf(node.path.original) !== -1\n ) {\n let result = b.sexpr(\n node.path,\n transformParams(b, node.params, node.path.original, moduleName, node.loc),\n node.hash,\n node.loc\n );\n\n // Avoid double/infinite-processing\n seen.add(result);\n\n return result;\n }\n },\n },\n };\n}\n\nfunction isLocalVariable(node: AST.PathExpression, hasLocal: (k: string) => boolean): boolean {\n return !(node.head.type === 'ThisHead') && node.tail.length === 1 && hasLocal(node.head.original);\n}\n\nfunction transformParams(\n b: EmberASTPluginEnvironment['syntax']['builders'],\n params: AST.Expression[],\n type: string,\n moduleName: string | undefined,\n loc: AST.SourceLocation | undefined\n): AST.Expression[] {\n let [first, ...rest] = params;\n\n assert(\n `The ${type} keyword requires at least one positional arguments ${calculateLocationDisplay(\n moduleName,\n loc\n )}`,\n first\n );\n\n if (isStringLiteral(first)) {\n return [\n b.sexpr(\n b.path('-resolve', first.loc),\n [b.string(`${type}:${first.value}`)],\n undefined,\n first.loc\n ),\n ...rest,\n ];\n } else if (DEBUG) {\n return [\n b.sexpr(\n b.path('-disallow-dynamic-resolution', first.loc),\n [first],\n b.hash([\n b.pair('type', b.string(type), first.loc),\n b.pair('loc', b.string(calculateLocationDisplay(moduleName, loc)), first.loc),\n b.pair('original', b.string(print(first))),\n ]),\n first.loc\n ),\n ...rest,\n ];\n } else {\n return params;\n }\n}\n","import type { AST, ASTPlugin } from '@glimmer/syntax';\nimport type { EmberASTPluginEnvironment } from '../types';\nimport { isPath, trackLocals } from './utils';\n\n/**\n @module ember\n*/\n\n/**\n A Glimmer2 AST transformation that replaces all instances of\n\n ```handlebars\n {{mount \"engine\" model=this.model}}\n ```\n\n with\n\n ```handlebars\n {{component (-mount \"engine\" model=this.model)}}\n ```\n\n and\n\n ```handlebars\n {{outlet}}\n ```\n\n with\n\n ```handlebars\n {{component (-outlet)}}\n ```\n\n @private\n @class TransformHasBlockSyntax\n*/\nexport default function transformWrapMountAndOutlet(env: EmberASTPluginEnvironment): ASTPlugin {\n let { builders: b } = env.syntax;\n\n let { hasLocal, visitor } = trackLocals(env);\n\n return {\n name: 'transform-wrap-mount-and-outlet',\n\n visitor: {\n ...visitor,\n\n MustacheStatement(node: AST.MustacheStatement): AST.Node | void {\n if (\n isPath(node.path) &&\n (node.path.original === 'mount' || node.path.original === 'outlet') &&\n !hasLocal(node.path.original)\n ) {\n let subexpression = b.sexpr(\n b.path(`-${node.path.original}`),\n node.params,\n node.hash,\n node.loc\n );\n\n return b.mustache(b.path('component'), [subexpression], b.hash(), undefined, node.loc);\n }\n },\n },\n };\n}\n","import AssertAgainstAttrs from './assert-against-attrs';\nimport AssertAgainstNamedOutlets from './assert-against-named-outlets';\nimport AssertInputHelperWithoutBlock from './assert-input-helper-without-block';\nimport AssertReservedNamedArguments from './assert-reserved-named-arguments';\nimport TransformActionSyntax from './transform-action-syntax';\nimport TransformEachInIntoEach from './transform-each-in-into-each';\nimport TransformEachTrackArray from './transform-each-track-array';\nimport TransformInElement from './transform-in-element';\nimport TransformQuotedBindingsIntoJustBindings from './transform-quoted-bindings-into-just-bindings';\nimport TransformResolutions from './transform-resolutions';\nimport TransformWrapMountAndOutlet from './transform-wrap-mount-and-outlet';\n\nexport const INTERNAL_PLUGINS = {\n AssertAgainstAttrs,\n AssertAgainstNamedOutlets,\n AssertInputHelperWithoutBlock,\n AssertReservedNamedArguments,\n TransformActionSyntax,\n TransformEachInIntoEach,\n TransformEachTrackArray,\n TransformInElement,\n TransformQuotedBindingsIntoJustBindings,\n TransformResolutions,\n TransformWrapMountAndOutlet,\n} as const;\n\n// order of plugins is important\nexport const RESOLUTION_MODE_TRANSFORMS = Object.freeze([\n TransformQuotedBindingsIntoJustBindings,\n AssertReservedNamedArguments,\n TransformActionSyntax,\n AssertAgainstAttrs,\n TransformEachInIntoEach,\n AssertInputHelperWithoutBlock,\n TransformInElement,\n TransformEachTrackArray,\n AssertAgainstNamedOutlets,\n TransformWrapMountAndOutlet,\n TransformResolutions,\n]);\n\nexport const STRICT_MODE_TRANSFORMS = Object.freeze([\n TransformQuotedBindingsIntoJustBindings,\n AssertReservedNamedArguments,\n TransformActionSyntax,\n TransformEachInIntoEach,\n TransformInElement,\n TransformEachTrackArray,\n AssertAgainstNamedOutlets,\n TransformWrapMountAndOutlet,\n]);\n\nexport const STRICT_MODE_KEYWORDS = Object.freeze([\n 'action',\n 'mut',\n 'readonly',\n 'unbound',\n\n // TransformEachInIntoEach\n '-each-in',\n // TransformInElement\n '-in-el-null',\n // TransformEachTrackArray\n '-track-array',\n // TransformWrapMountAndOutlet\n '-mount',\n '-outlet',\n]);\n","import { Cache } from '@ember/-internals/utils';\n\n/*\n This diverges from `Ember.String.dasherize` so that`<XFoo />` can resolve to `x-foo`.\n `Ember.String.dasherize` would resolve it to `xfoo`..\n*/\nconst SIMPLE_DASHERIZE_REGEXP = /[A-Z]|::/g;\nconst ALPHA = /[A-Za-z0-9]/;\n\nexport default new Cache<string, string>(1000, (key) =>\n key.replace(SIMPLE_DASHERIZE_REGEXP, (char, index) => {\n if (char === '::') {\n return '/';\n }\n\n if (index === 0 || !ALPHA.test(key[index - 1]!)) {\n return char.toLowerCase();\n }\n\n return `-${char.toLowerCase()}`;\n })\n);\n","import { assert } from '@ember/debug';\nimport {\n RESOLUTION_MODE_TRANSFORMS,\n STRICT_MODE_KEYWORDS,\n STRICT_MODE_TRANSFORMS,\n} from '@ember/template-compiler/-internal-primitives';\nimport type { EmberPrecompileOptions, PluginFunc } from '../types';\nimport COMPONENT_NAME_SIMPLE_DASHERIZE_CACHE from './dasherize-component-name';\n\nlet USER_PLUGINS: PluginFunc[] = [];\n\nfunction malformedComponentLookup(string: string) {\n return string.indexOf('::') === -1 && string.indexOf(':') > -1;\n}\n\nexport function buildCompileOptions(_options: EmberPrecompileOptions): EmberPrecompileOptions {\n let moduleName = _options.moduleName;\n let options: EmberPrecompileOptions = Object.assign(\n { meta: {}, isProduction: false, plugins: { ast: [] } },\n _options,\n {\n moduleName,\n customizeComponentName(tagname: string): string {\n assert(\n `You tried to invoke a component named <${tagname} /> in \"${\n moduleName ?? '[NO MODULE]'\n }\", but that is not a valid name for a component. Did you mean to use the \"::\" syntax for nested components?`,\n !malformedComponentLookup(tagname)\n );\n\n return COMPONENT_NAME_SIMPLE_DASHERIZE_CACHE.get(tagname);\n },\n }\n );\n\n if ('locals' in options && !options.locals) {\n // Glimmer's precompile options declare `locals` like:\n // locals?: string[]\n // but many in-use versions of babel-plugin-htmlbars-inline-precompile will\n // set locals to `null`. This used to work but only because glimmer was\n // ignoring locals for non-strict templates, and now it supports that case.\n delete options.locals;\n }\n\n // move `moduleName` into `meta` property\n if (options.moduleName) {\n let meta = options.meta;\n assert('has meta', meta); // We just set it\n meta.moduleName = options.moduleName;\n }\n\n if (options.strictMode) {\n options.keywords = STRICT_MODE_KEYWORDS;\n }\n\n return options;\n}\n\nexport function transformsFor(options: EmberPrecompileOptions): readonly PluginFunc[] {\n return options.strictMode ? STRICT_MODE_TRANSFORMS : RESOLUTION_MODE_TRANSFORMS;\n}\n\nexport default function compileOptions(\n _options: Partial<EmberPrecompileOptions> = {}\n): EmberPrecompileOptions {\n let options = buildCompileOptions(_options);\n let builtInPlugins = transformsFor(options);\n\n if (!_options.plugins) {\n options.plugins = { ast: [...USER_PLUGINS, ...builtInPlugins] };\n } else {\n let potententialPugins = [...USER_PLUGINS, ...builtInPlugins];\n assert('expected plugins', options.plugins);\n let pluginsToAdd = potententialPugins.filter((plugin) => {\n assert('expected plugins', options.plugins);\n return options.plugins.ast.indexOf(plugin) === -1;\n });\n options.plugins.ast = options.plugins.ast.concat(pluginsToAdd);\n }\n\n return options;\n}\n","/**\n@module ember\n*/\n\nimport { precompile as glimmerPrecompile } from '@glimmer/compiler';\nimport type { EmberPrecompileOptions } from '../types';\nimport compileOptions from './compile-options';\n\n/**\n Uses HTMLBars `compile` function to process a string into a compiled template string.\n The returned string must be passed through `Ember.HTMLBars.template`.\n\n This is not present in production builds.\n\n @private\n @method precompile\n @param {String} templateString This is the string to be compiled by HTMLBars.\n*/\nexport default function precompile(\n templateString: string,\n options: Partial<EmberPrecompileOptions> = {}\n): string {\n return glimmerPrecompile(templateString, compileOptions(options));\n}\n","/**\n@module ember\n*/\nimport type { EmberPrecompileOptions } from '../types';\nimport precompile from './precompile';\nimport type { SerializedTemplateWithLazyBlock, TemplateFactory } from '@glimmer/interfaces';\nimport { template } from '@ember/-internals/glimmer';\n\n/**\n Uses HTMLBars `compile` function to process a string into a compiled template.\n This is not present in production builds.\n @private\n @method compile\n @param {String} templateString This is the string to be compiled by HTMLBars.\n @param {Object} options This is an options hash to augment the compiler options.\n*/\nexport default function compile(\n templateString: string,\n options: Partial<EmberPrecompileOptions> = {}\n): TemplateFactory {\n if (!template) {\n throw new Error(\n 'Cannot call `compile` with only the template compiler loaded. Please load `ember.debug.js` or `ember.prod.js` prior to calling `compile`.'\n );\n }\n\n return template(evaluate(precompile(templateString, options)));\n}\n\nfunction evaluate(precompiled: string): SerializedTemplateWithLazyBlock {\n return new Function(`return ${precompiled}`)();\n}\n","/**\n@module ember\n*/\n\nimport type { TemplateFactory } from '@glimmer/interfaces';\nimport compile from './compile';\n\nexport interface BootstrapOptions {\n context?: Document | HTMLElement;\n hasTemplate(templateName: string): boolean;\n setTemplate(templateName: string, template: TemplateFactory): void;\n}\n\n/**\n Find templates stored in the head tag as script tags and make them available\n to `Ember.CoreView` in the global `Ember.TEMPLATES` object.\n\n Script tags with `text/x-handlebars` will be compiled\n with Ember's template compiler and are suitable for use as a view's template.\n\n @private\n @method bootstrap\n @for Ember.HTMLBars\n @static\n @param ctx\n*/\nfunction bootstrap({ context, hasTemplate, setTemplate }: BootstrapOptions) {\n if (!context) {\n context = document;\n }\n\n let selector = 'script[type=\"text/x-handlebars\"]';\n\n let elements = context.querySelectorAll(selector);\n\n for (let script of elements) {\n // Get the name of the script\n // First look for data-template-name attribute, then fall back to its\n // id if no name is found.\n let templateName =\n script.getAttribute('data-template-name') || script.getAttribute('id') || 'application';\n let template;\n\n template = compile(script.innerHTML, {\n moduleName: templateName,\n });\n\n // Check if template of same name already exists.\n if (hasTemplate(templateName)) {\n throw new Error(`Template named \"${templateName}\" already exists.`);\n }\n\n // For templates which have a name, we save them and then remove them from the DOM.\n setTemplate(templateName, template);\n\n // Remove script tag from DOM.\n script.parentNode!.removeChild(script);\n }\n}\n\nexport default bootstrap;\n","import bootstrap from './bootstrap';\nimport * as emberEnv from '@ember/-internals/browser-environment';\nimport * as emberGlimmer from '@ember/-internals/glimmer';\nimport * as emberApp from '@ember/application';\n\n// Globals mode template compiler\nif (emberApp.default) {\n let Application = emberApp.default;\n let { hasTemplate, setTemplate } = emberGlimmer;\n let { hasDOM } = emberEnv;\n\n Application.initializer({\n name: 'domTemplates',\n initialize() {\n if (hasDOM) {\n bootstrap({ context: document, hasTemplate, setTemplate });\n }\n },\n });\n}\n","export * from './lib/public-api';\nimport * as ETC from './lib/public-api';\nimport { __registerTemplateCompiler } from '@ember/template-compilation';\n\n__registerTemplateCompiler(ETC);\n// used to bootstrap templates\nimport './lib/system/bootstrap';\n\n// add domTemplates initializer (only does something if `ember-template-compiler`\n// is loaded already)\nimport './lib/system/initializer';\n","import { INTERNAL_PLUGINS } from '@ember/template-compiler/-internal-primitives';\nimport type { ASTPluginBuilder } from '@glimmer/syntax';\n\nexport default INTERNAL_PLUGINS.AssertAgainstAttrs as ASTPluginBuilder;\n","import { INTERNAL_PLUGINS } from '@ember/template-compiler/-internal-primitives';\nimport type { ASTPluginBuilder } from '@glimmer/syntax';\n\nexport default INTERNAL_PLUGINS.AssertAgainstNamedOutlets as ASTPluginBuilder;\n","import { INTERNAL_PLUGINS } from '@ember/template-compiler/-internal-primitives';\nimport type { ASTPluginBuilder } from '@glimmer/syntax';\n\nexport default INTERNAL_PLUGINS.AssertInputHelperWithoutBlock as ASTPluginBuilder;\n","import { INTERNAL_PLUGINS } from '@ember/template-compiler/-internal-primitives';\nimport type { ASTPluginBuilder } from '@glimmer/syntax';\n\nexport default INTERNAL_PLUGINS.AssertReservedNamedArguments as ASTPluginBuilder;\n","import { INTERNAL_PLUGINS } from '@ember/template-compiler/-internal-primitives';\nimport type { ASTPluginBuilder } from '@glimmer/syntax';\n\nexport default INTERNAL_PLUGINS.TransformActionSyntax as ASTPluginBuilder;\n","import { INTERNAL_PLUGINS } from '@ember/template-compiler/-internal-primitives';\nimport type { ASTPluginBuilder } from '@glimmer/syntax';\n\nexport default INTERNAL_PLUGINS.TransformEachInIntoEach as ASTPluginBuilder;\n","import { INTERNAL_PLUGINS } from '@ember/template-compiler/-internal-primitives';\nimport type { ASTPluginBuilder } from '@glimmer/syntax';\n\nexport default INTERNAL_PLUGINS.TransformEachTrackArray as ASTPluginBuilder;\n","import { INTERNAL_PLUGINS } from '@ember/template-compiler/-internal-primitives';\nimport type { ASTPluginBuilder } from '@glimmer/syntax';\n\nexport default INTERNAL_PLUGINS.TransformInElement as ASTPluginBuilder;\n","import { INTERNAL_PLUGINS } from '@ember/template-compiler/-internal-primitives';\nimport type { ASTPluginBuilder } from '@glimmer/syntax';\n\nexport default INTERNAL_PLUGINS.TransformQuotedBindingsIntoJustBindings as ASTPluginBuilder;\n","import { INTERNAL_PLUGINS } from '@ember/template-compiler/-internal-primitives';\nimport type { ASTPluginBuilder } from '@glimmer/syntax';\n\nexport default INTERNAL_PLUGINS.TransformResolutions as ASTPluginBuilder;\n","import { INTERNAL_PLUGINS } from '@ember/template-compiler/-internal-primitives';\nimport type { ASTPluginBuilder } from '@glimmer/syntax';\n\nexport default INTERNAL_PLUGINS.TransformWrapMountAndOutlet as ASTPluginBuilder;\n","import type { ASTPluginBuilder } from '@glimmer/syntax';\nimport AssertAgainstAttrs from './assert-against-attrs';\nimport AssertAgainstNamedOutlets from './assert-against-named-outlets';\nimport AssertInputHelperWithoutBlock from './assert-input-helper-without-block';\nimport AssertReservedNamedArguments from './assert-reserved-named-arguments';\nimport TransformActionSyntax from './transform-action-syntax';\nimport TransformEachInIntoEach from './transform-each-in-into-each';\nimport TransformEachTrackArray from './transform-each-track-array';\nimport TransformInElement from './transform-in-element';\nimport TransformQuotedBindingsIntoJustBindings from './transform-quoted-bindings-into-just-bindings';\nimport TransformResolutions from './transform-resolutions';\nimport TransformWrapMountAndOutlet from './transform-wrap-mount-and-outlet';\n\nexport const INTERNAL_PLUGINS: Record<string, ASTPluginBuilder> = {\n AssertAgainstAttrs,\n AssertAgainstNamedOutlets,\n AssertInputHelperWithoutBlock,\n AssertReservedNamedArguments,\n TransformActionSyntax,\n TransformEachInIntoEach,\n TransformEachTrackArray,\n TransformInElement,\n TransformQuotedBindingsIntoJustBindings,\n TransformResolutions,\n TransformWrapMountAndOutlet,\n} as const;\n\n// order of plugins is important\nexport const RESOLUTION_MODE_TRANSFORMS: readonly ASTPluginBuilder[] = Object.freeze([\n TransformQuotedBindingsIntoJustBindings,\n AssertReservedNamedArguments,\n TransformActionSyntax,\n AssertAgainstAttrs,\n TransformEachInIntoEach,\n AssertInputHelperWithoutBlock,\n TransformInElement,\n TransformEachTrackArray,\n AssertAgainstNamedOutlets,\n TransformWrapMountAndOutlet,\n TransformResolutions,\n]);\n\nexport const STRICT_MODE_TRANSFORMS: readonly ASTPluginBuilder[] = Object.freeze([\n TransformQuotedBindingsIntoJustBindings,\n AssertReservedNamedArguments,\n TransformActionSyntax,\n TransformEachInIntoEach,\n TransformInElement,\n TransformEachTrackArray,\n AssertAgainstNamedOutlets,\n TransformWrapMountAndOutlet,\n]);\n\nexport const STRICT_MODE_KEYWORDS = Object.freeze([\n 'action',\n 'mut',\n 'readonly',\n 'unbound',\n\n // TransformEachInIntoEach\n '-each-in',\n // TransformInElement\n '-in-el-null',\n // TransformEachTrackArray\n '-track-array',\n // TransformWrapMountAndOutlet\n '-mount',\n '-outlet',\n]);\n","import type { AST } from '@glimmer/syntax';\n\nexport default function calculateLocationDisplay(\n moduleName: string | undefined,\n loc?: AST.SourceLocation | undefined\n): string {\n let moduleInfo = '';\n if (moduleName) {\n moduleInfo += `'${moduleName}' `;\n }\n\n if (loc) {\n let { column, line } = loc.start || { line: undefined, column: undefined };\n if (line !== undefined && column !== undefined) {\n if (moduleName) {\n // only prepend @ if the moduleName was present\n moduleInfo += '@ ';\n }\n moduleInfo += `L${line}:C${column}`;\n }\n }\n\n if (moduleInfo) {\n moduleInfo = `(${moduleInfo}) `;\n }\n\n return moduleInfo;\n}\n","// The main entrypoint of ember-template-compiler is the fairly-crufty\n// backward-compatible API. In contrast, this is the subset of that that's\n// actually used by babel-plugin-ember-template-compilation.\n//\n// This module exists so that ember-source can build itself -- the\n// ember-template-compiler.js bundle it an output of the build, but the build\n// needs to compile templates. Unlike the full ./index.ts, this module can be\n// directly evaluted in node because it doesn't try to pull in the whole kitchen\n// sink.\nexport { default as precompile } from './lib/system/precompile';\nexport { buildCompileOptions as _buildCompileOptions } from './lib/system/compile-options';\nexport { preprocess as _preprocess, print as _print } from '@glimmer/syntax';\n","/* eslint-disable */\n\n// This file was derived from the output of the classic broccoli-based build of\n// ember-template-compiler.js. It's intended to convey exactly how the authored ES modules\n// get mapped into backward-compatible AMD defines.\n\nimport d from 'amd-compat-entrypoint-definition';\n\nimport * as emberinternalsBrowserEnvironmentIndex from '@ember/-internals/browser-environment/index';\nd('@ember/-internals/browser-environment/index', emberinternalsBrowserEnvironmentIndex);\n\nimport * as emberinternalsEnvironmentIndex from '@ember/-internals/environment/index';\nd('@ember/-internals/environment/index', emberinternalsEnvironmentIndex);\n\nimport * as emberinternalsUtilsIndex from '@ember/-internals/utils/index';\nd('@ember/-internals/utils/index', emberinternalsUtilsIndex);\n\nimport * as emberCanaryFeaturesIndex from '@ember/canary-features/index';\nd('@ember/canary-features/index', emberCanaryFeaturesIndex);\n\n/*\n\nThe classic build included these modules but not their dependencies, so they\nnever worked. Keeping this comment to document why the list of modules differs in\nthis way.\n\nimport * as emberDebugContainerDebugAdapter from '@ember/debug/container-debug-adapter';\nd('@ember/debug/container-debug-adapter', emberDebugContainerDebugAdapter);\n\nimport * as emberDebugDataAdapter from '@ember/debug/data-adapter';\nd('@ember/debug/data-adapter', emberDebugDataAdapter);\n\n*/\n\nimport * as emberDebugIndex from '@ember/debug/index';\nd('@ember/debug/index', emberDebugIndex);\n\nimport * as emberDebugLibCaptureRenderTree from '@ember/debug/lib/capture-render-tree';\nd('@ember/debug/lib/capture-render-tree', emberDebugLibCaptureRenderTree);\n\nimport * as emberDebugLibDeprecate from '@ember/debug/lib/deprecate';\nd('@ember/debug/lib/deprecate', emberDebugLibDeprecate);\n\nimport * as emberDebugLibHandlers from '@ember/debug/lib/handlers';\nd('@ember/debug/lib/handlers', emberDebugLibHandlers);\n\nimport * as emberDebugLibInspect from '@ember/debug/lib/inspect';\nd('@ember/debug/lib/inspect', emberDebugLibInspect);\n\nimport * as emberDebugLibTesting from '@ember/debug/lib/testing';\nd('@ember/debug/lib/testing', emberDebugLibTesting);\n\nimport * as emberDebugLibWarn from '@ember/debug/lib/warn';\nd('@ember/debug/lib/warn', emberDebugLibWarn);\n\nimport * as emberDeprecatedFeaturesIndex from '@ember/deprecated-features/index';\nd('@ember/deprecated-features/index', emberDeprecatedFeaturesIndex);\n\nimport * as glimmerCompiler from '@glimmer/compiler';\nd('@glimmer/compiler', glimmerCompiler);\n\nimport * as glimmerEnv from '@glimmer/env';\nd('@glimmer/env', glimmerEnv);\n\nimport * as glimmerSyntax from '@glimmer/syntax';\nd('@glimmer/syntax', glimmerSyntax);\n\nimport * as glimmerUtil from '@glimmer/util';\nd('@glimmer/util', glimmerUtil);\n\nimport * as glimmerVm from '@glimmer/vm';\nd('@glimmer/vm', glimmerVm);\n\nimport * as glimmerWireFormat from '@glimmer/wire-format';\nd('@glimmer/wire-format', glimmerWireFormat);\n\nimport * as handlebarsParserIndex from '@handlebars/parser';\nd('@handlebars/parser/index', handlebarsParserIndex);\n\nimport * as emberTemplateCompilerIndex from 'ember-template-compiler/index';\nd('ember-template-compiler/index', emberTemplateCompilerIndex);\n\nimport * as emberTemplateCompilerLibPluginsAssertAgainstAttrs from 'ember-template-compiler/lib/plugins/assert-against-attrs';\nd(\n 'ember-template-compiler/lib/plugins/assert-against-attrs',\n emberTemplateCompilerLibPluginsAssertAgainstAttrs\n);\n\nimport * as emberTemplateCompilerLibPluginsAssertAgainstNamedOutlets from 'ember-template-compiler/lib/plugins/assert-against-named-outlets';\nd(\n 'ember-template-compiler/lib/plugins/assert-against-named-outlets',\n emberTemplateCompilerLibPluginsAssertAgainstNamedOutlets\n);\n\nimport * as emberTemplateCompilerLibPluginsAssertInputHelperWithoutBlock from 'ember-template-compiler/lib/plugins/assert-input-helper-without-block';\nd(\n 'ember-template-compiler/lib/plugins/assert-input-helper-without-block',\n emberTemplateCompilerLibPluginsAssertInputHelperWithoutBlock\n);\n\nimport * as emberTemplateCompilerLibPluginsAssertReservedNamedArguments from 'ember-template-compiler/lib/plugins/assert-reserved-named-arguments';\nd(\n 'ember-template-compiler/lib/plugins/assert-reserved-named-arguments',\n emberTemplateCompilerLibPluginsAssertReservedNamedArguments\n);\n\nimport * as emberTemplateCompilerLibPluginsIndex from 'ember-template-compiler/lib/plugins/index';\nd('ember-template-compiler/lib/plugins/index', emberTemplateCompilerLibPluginsIndex);\n\nimport * as emberTemplateCompilerLibPluginsTransformActionSyntax from 'ember-template-compiler/lib/plugins/transform-action-syntax';\nd(\n 'ember-template-compiler/lib/plugins/transform-action-syntax',\n emberTemplateCompilerLibPluginsTransformActionSyntax\n);\n\nimport * as emberTemplateCompilerLibPluginsTransformEachInIntoEach from 'ember-template-compiler/lib/plugins/transform-each-in-into-each';\nd(\n 'ember-template-compiler/lib/plugins/transform-each-in-into-each',\n emberTemplateCompilerLibPluginsTransformEachInIntoEach\n);\n\nimport * as emberTemplateCompilerLibPluginsTransformEachTrackArray from 'ember-template-compiler/lib/plugins/transform-each-track-array';\nd(\n 'ember-template-compiler/lib/plugins/transform-each-track-array',\n emberTemplateCompilerLibPluginsTransformEachTrackArray\n);\n\nimport * as emberTemplateCompilerLibPluginsTransformInElement from 'ember-template-compiler/lib/plugins/transform-in-element';\nd(\n 'ember-template-compiler/lib/plugins/transform-in-element',\n emberTemplateCompilerLibPluginsTransformInElement\n);\n\nimport * as emberTemplateCompilerLibPluginsTransformQuotedBindingsIntoJustBindings from 'ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings';\nd(\n 'ember-template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings',\n emberTemplateCompilerLibPluginsTransformQuotedBindingsIntoJustBindings\n);\n\nimport * as emberTemplateCompilerLibPluginsTransformResolutions from 'ember-template-compiler/lib/plugins/transform-resolutions';\nd(\n 'ember-template-compiler/lib/plugins/transform-resolutions',\n emberTemplateCompilerLibPluginsTransformResolutions\n);\n\nimport * as emberTemplateCompilerLibPluginsTransformWrapMountAndOutlet from 'ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet';\nd(\n 'ember-template-compiler/lib/plugins/transform-wrap-mount-and-outlet',\n emberTemplateCompilerLibPluginsTransformWrapMountAndOutlet\n);\n\nimport * as emberTemplateCompilerLibPluginsUtils from 'ember-template-compiler/lib/plugins/utils';\nd('ember-template-compiler/lib/plugins/utils', emberTemplateCompilerLibPluginsUtils);\n\nimport * as emberTemplateCompilerLibPublicApi from 'ember-template-compiler/lib/public-api';\nd('ember-template-compiler/lib/public-api', emberTemplateCompilerLibPublicApi);\n\nimport * as emberTemplateCompilerLibSystemBootstrap from 'ember-template-compiler/lib/system/bootstrap';\nd('ember-template-compiler/lib/system/bootstrap', emberTemplateCompilerLibSystemBootstrap);\n\nimport * as emberTemplateCompilerLibSystemCalculateLocationDisplay from 'ember-template-compiler/lib/system/calculate-location-display';\nd(\n 'ember-template-compiler/lib/system/calculate-location-display',\n emberTemplateCompilerLibSystemCalculateLocationDisplay\n);\n\nimport * as emberTemplateCompilerLibSystemCompileOptions from 'ember-template-compiler/lib/system/compile-options';\nd(\n 'ember-template-compiler/lib/system/compile-options',\n emberTemplateCompilerLibSystemCompileOptions\n);\n\nimport * as emberTemplateCompilerLibSystemCompile from 'ember-template-compiler/lib/system/compile';\nd('ember-template-compiler/lib/system/compile', emberTemplateCompilerLibSystemCompile);\n\nimport * as emberTemplateCompilerLibSystemDasherizeComponentName from 'ember-template-compiler/lib/system/dasherize-component-name';\nd(\n 'ember-template-compiler/lib/system/dasherize-component-name',\n emberTemplateCompilerLibSystemDasherizeComponentName\n);\n\nimport * as emberTemplateCompilerLibSystemInitializer from 'ember-template-compiler/lib/system/initializer';\nd('ember-template-compiler/lib/system/initializer', emberTemplateCompilerLibSystemInitializer);\n\nimport * as emberTemplateCompilerLibSystemPrecompile from 'ember-template-compiler/lib/system/precompile';\nd('ember-template-compiler/lib/system/precompile', emberTemplateCompilerLibSystemPrecompile);\n\nimport * as emberTemplateCompilerLibTypes from 'ember-template-compiler/lib/types';\nd('ember-template-compiler/lib/types', emberTemplateCompilerLibTypes);\n\nimport * as emberTemplateCompilerMinimal from 'ember-template-compiler/minimal';\nd('ember-template-compiler/minimal', emberTemplateCompilerMinimal);\n\nimport * as emberVersion from 'ember/version';\nd('ember/version', emberVersion);\n\nimport * as simpleHtmlTokenizer from 'simple-html-tokenizer';\nd('simple-html-tokenizer', simpleHtmlTokenizer);\n\nif (typeof module === 'object' && module.exports) {\n module.exports = emberTemplateCompilerIndex;\n}\n\nconsole.log(\n '\\n\\n--------\\n+ Your app is using the legacy ember-template-compiler.js AMD bundle. This will be removed in ember-source 7.0. See https://deprecations.emberjs.com/id/using-amd-bundles for more details.\\n--------'\n);\n"],"names":["self","Object","Window","constructor","document","location","history","navigator","userAgent","window","hasDom","isChrome","chrome","opera","isFirefox","test","checkGlobal","value","undefined","checkElementIdShadowing","nodeType","global","mainContext","Function","context","Ember","imports","exports","lookup","getLookup","setLookup","ENV","ENABLE_OPTIONAL_FEATURES","EXTEND_PROTOTYPES","Array","LOG_STACKTRACE_ON_DEPRECATION","LOG_VERSION","RAISE_ON_DEPRECATION","STRUCTURED_PROFILE","_DEBUG_RENDER_TREE","_ALL_DEPRECATIONS_ENABLED","_OVERRIDE_DEPRECATION_VERSION","_DEFAULT_ASYNC_OBSERVERS","_RERENDER_LOOP_LIMIT","EMBER_LOAD_HOOKS","FEATURES","EmberENV","flag","prototype","hasOwnProperty","call","defaultValue","hookName","hooks","isArray","filter","hook","feature","getENV","intern","str","obj","create","key","isObject","_uuid","uuid","GUID_PREFIX","OBJECT_GUIDS","WeakMap","NON_OBJECT_GUIDS","Map","GUID_KEY","Date","now","generateGuid","prefix","guid","toString","set","guidFor","get","type","GENERATED_SYMBOLS","isInternalSymbol","possibleSymbol","indexOf","enumerableSymbol","debugName","id","Math","floor","random","symbol","push","Symbol","makeDictionary","parent","dict","getDebugName","getFunctionName","fn","functionName","name","match","replace","getObjectName","className","length","getPrimitiveName","String","HAS_SUPER_PATTERN","fnToString","checkHasSuper","sourceAvailable","func","HAS_SUPER_MAP","ROOT","freeze","hasSuper","ObserverListenerMeta","listeners","observers","OBSERVERS_LISTENERS_MAP","createObserverListenerMetaFor","meta","observerListenerMetaFor","setObservers","setListeners","IS_WRAPPED_FUNCTION_SET","WeakSet","wrap","superFunc","has","_wrap","superWrapper","orig","_super","ret","apply","arguments","add","lookupDescriptor","keyName","current","descriptor","getOwnPropertyDescriptor","getPrototypeOf","canInvoke","methodName","NAMES","setName","getName","objectToString","isNone","r","k","PROXIES","isProxy","setProxy","object","Cache","size","misses","hits","limit","store","purge","clear","assert","setAssert","implementation","desc","Error","HANDLERS","registerHandler","_type","_callback","invoke","callback","nextHandler","message","options","handlerForType","missingOptionsDeprecation","missingOptionsIdDeprecation","missingOptionDeprecation","deprecate","handler","genericRegisterHandler","formatMessage","_message","until","for","url","logDeprecationToConsole","updatedMessage","console","warn","captureErrorForStack","stack","__fail__","fail","e","logDeprecationStackTrace","next","stackStr","error","split","shift","slice","join","raiseOnDeprecation","missingOption","Boolean","since","testing","isTesting","setTesting","logWarning","functionToString","keys","objectKeys","stringify","JSON","LIST_LIMIT","DEPTH_LIMIT","SAFE_KEY","inspect","inspectValue","depth","seen","valueIsArray","inspectArray","inspectObject","inspectKey","s","i","arr","captureRenderTree","app","domRenderer","renderer","debugRenderTree","capture","noop","info","debug","currentDeprecate","debugSeal","debugFreeze","runInDebug","setDebugFunction","getDebugFunction","deprecateFunc","args","defaultDeprecate","seal","isFrozen","_warn","_warnIfUsingStrippedFeatureFlags","addEventListener","documentElement","dataset","downloadURL","setupMandatorySetter","teardownMandatorySetter","setWithMandatorySetter","isElementKey","isPositiveInt","isStringInt","num","parseInt","SEEN_TAGS","MANDATORY_SETTERS","propertyIsEnumerable","tag","configurable","writable","setters","hadOwnProperty","defineProperty","enumerable","setter","DEFAULT_FEATURES","assign","isEnabled","ASSIGN","BUILDER_LITERAL","BUILDER_COMMENT","BUILDER_APPEND","BUILDER_MODIFIER","BUILDER_DYNAMIC_COMPONENT","BUILDER_GET","BUILDER_CONCAT","BUILDER_HAS_BLOCK","BUILDER_HAS_BLOCK_PARAMS","BLOCK_HEAD","CALL_HEAD","ELEMENT_HEAD","APPEND_PATH_HEAD","APPEND_EXPR_HEAD","LITERAL_HEAD","MODIFIER_HEAD","DYNAMIC_COMPONENT_HEAD","COMMENT_HEAD","SPLAT_HEAD","KEYWORD_HEAD","LOCAL_VAR","FREE_VAR","ARG_VAR","BLOCK_VAR","THIS_VAR","LITERAL_EXPR","CALL_EXPR","GET_PATH_EXPR","GET_VAR_EXPR","CONCAT_EXPR","HAS_BLOCK_EXPR","HAS_BLOCK_PARAMS_EXPR","CURRIED_COMPONENT","CURRIED_HELPER","CURRIED_MODIFIER","NS_XLINK","NS_XML","NS_XMLNS","msg","LOGGER","assertNever","log","setLocalDebugType","brand","unwrap","val","expect","exhausted","isPresentArray","list","asPresentArray","getLast","getFirst","mapPresentArray","mapper","out","item","SIGN_BIT","encodeNegative","decodeNegative","encodePositive","decodePositive","decodeHandle","encodeImmediate","decodeImmediate","forEach","x","VM_SYSCALL_SIZE","VM_MACHINE_SIZE","LOCAL_LOGGER","EMPTY_ARRAY","emptyArray","EMPTY_STRING_ARRAY","EMPTY_NUMBER_ARRAY","isEmptyArray","input","reverse","enumerate","zipTuples","left","right","zipArrays","perform","isDict","u","isIndexable","StackImpl","values","pop","nth","from","len","isEmpty","snapshot","toArray","beginTestSteps","endTestSteps","verifySteps","logStep","clearElement","firstChild","nextSibling","removeChild","SERIALIZATION_FIRST_NODE_STRING","isSerializationFirstNode","node","nodeValue","entries","strip","strings","string","dynamic","lines","min","Infinity","line","leading","exec","stripped","opcodes","Append","TrustingAppend","Comment","Modifier","StrictModifier","Block","StrictBlock","Component","OpenElement","OpenElementWithSplat","FlushElement","CloseElement","StaticAttr","DynamicAttr","ComponentAttr","AttrSplat","Yield","DynamicArg","StaticArg","TrustingDynamicAttr","TrustingComponentAttr","StaticComponentAttr","Debugger","Undefined","Call","Concat","GetSymbol","GetLexicalSymbol","GetStrictKeyword","GetFreeAsComponentOrHelperHead","GetFreeAsHelperHead","GetFreeAsModifierHead","GetFreeAsComponentHead","InElement","If","Each","Let","WithDynamicVars","InvokeComponent","HasBlock","HasBlockParams","Curry","Not","IfInline","GetDynamicVar","Log","resolution","Strict","ResolveAsComponentOrHelperHead","ResolveAsHelperHead","ResolveAsModifierHead","ResolveAsComponentHead","WellKnownAttrNames","class","style","href","WellKnownTagNames","div","span","p","a","is","variant","isFlushElement","isAttribute","isStringLiteral","expr","getStringFromValue","isArgument","isHelper","isGet","normalizeStatement","statement","statementIsExpression","normalizeAppendExpression","isSugaryArrayStatement","normalizeSugaryArrayStatement","normalizeVerboseStatement","normalizeAppendHead","normalizeDottedPath","head","trusted","kind","path","params","hash","normalizeParams","normalizeHash","normalizeCallHead","blocks","blockParams","normalizeBuilderBlockStatement","attrs","block","normalizeAttrs","normalizeBlock","extractElement","normalizeExpression","extractBlockHead","result","normalizePath","tail","pathHead","normalizePathHead","variable","whole","rest","mode","normalizeBlocks","normalizeBlockHash","default","mapObject","map","normalizeAttr","attr","expression","forceTrusted","isBuilderCallExpression","normalizeCallExpression","ProgramSymbols","_freeVariables","_symbols","top","toSymbols","toUpvars","freeVar","addString","arg","local","this","hasLocal","_name","child","locals","LocalSymbols","paramSymbols","array","index","unimpl","buildStatements","statements","symbols","buildStatement","buildNormalizedStatements","normalized","Op","buildGetPath","buildExpression","builtParams","buildParams","builtHash","buildHash","builtExpr","buildCallHead","VariableResolutionContext","buildBlocks","buildKeyword","buildElement","interpolated","reduce","c","unicode","charCode","fromCharCode","NEWLINE","childSymbols","buildBlock","inverse","keyExpr","hasSplat","buildElementParams","some","buildAttributeValue","extractNamespace","namespace","varContext","bare","buildVar","buildConcat","callHead","op","sym","expressionContextOp","getSymbolForVar","localAssert","exprs","Char","NBSP","QUOT","LT","GT","AMP","ATTR_VALUE_REGEX_TEST","ATTR_VALUE_REGEX_REPLACE","RegExp","source","TEXT_REGEX_TEST","TEXT_REGEX_REPLACE","attrValueReplacer","char","charCodeAt","textReplacer","escapeAttrValue","attrValue","escapeText","text","sortByLoc","b","loc","isInvisible","startPosition","column","voidMap","Set","getVoidTags","NON_WHITESPACE","isVoidTag","toLowerCase","Printer","buffer","handledByOverride","ensureLeadingWhitespace","override","Node","TopLevelStatement","Expression","ConcatStatement","Hash","HashPair","ElementModifierStatement","Literal","PathExpression","SubExpression","literal","StringLiteral","BooleanLiteral","NumberLiteral","UndefinedLiteral","NullLiteral","MustacheStatement","BlockStatement","MustacheCommentStatement","CommentStatement","TextNode","ElementNode","Template","AttrNode","template","TopLevelStatements","body","chained","el","OpenElementNode","children","CloseElementNode","parts","attributes","modifiers","comments","sort","part","BlockParams","selfClosing","startsWith","shouldElideValue","chars","AttrNodeValue","quote","entityEncoding","includes","isInAttr","mustache","trusting","open","Params","close","inverseStrip","openStrip","program","closeStrip","concat","comment","mod","original","sexp","param","pairs","pair","bool","number","print","build","ast","printer","isKeyword","word","KEYWORDS_TYPES","types","action","component","debugger","each","helper","if","let","modifier","mount","mut","outlet","readonly","unbound","unless","yield","errorProps","Exception","endLineNumber","endColumn","start","end","tmp","idx","captureStackTrace","lineNumber","nop","Visitor","parents","mutating","acceptKey","accept","acceptRequired","acceptArray","l","splice","unshift","Program","visitSubExpression","Decorator","visitBlock","DecoratorBlock","PartialStatement","visitPartial","PartialBlockStatement","partial","ContentStatement","WhitespaceControl","doStandalone","ignoreStandalone","isRoot","isRootSeen","_isPrevWhitespace","isPrevWhitespace","_isNextWhitespace","isNextWhitespace","openStandalone","closeStandalone","inlineStandalone","omitRight","omitLeft","indent","firstInverse","lastInverse","prev","sibling","multiple","rightStripped","leftStripped","parser","o","v","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$Vr","$Vs","$Vt","$Vu","$Vv","$Vw","$Vx","$Vy","$Vz","trace","yy","symbols_","terminals_","productions_","performAction","anonymous","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","prepareProgram","stripComment","stripFlags","locInfo","prepareRawBlock","prepareBlock","chain","prepareMustache","syntax","preparePartialBlock","square","Number","preparePath","separator","table","defaultActions","parseError","recoverable","parse","tstack","vstack","lstack","recovering","TERROR","EOF","lexer","sharedState","setInput","yylloc","yyloc","ranges","_token_stack","lex","token","state","yyval","newState","expected","errStr","showPosition","first_line","last_line","first_column","last_column","range","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","unput","substr","oldLines","more","reject","backtrack_lexer","less","n","pastInput","past","upcomingInput","pre","test_match","indexed_rule","backup","matches","tempMatch","rules","_currentRules","flex","begin","condition","popState","conditions","topState","abs","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","substring","Parser","PrintVisitor","padding","pad","callBody","content","sexpr","callExpr","paramStrings","__spreadArray","data","ArrayLiteral","_this","items","HashLiteral","hashPairs","joinedPairs","validateClose","errorNode","SourceLocation","charAt","isLiteral","partPrefix","escapeFlag","escaped","decorator","openRawBlock","contents","openBlock","inverseAndProgram","inverted","firstLoc","lastLoc","baseHelpers","Helpers","parseWithoutProcessing","srcName","squareSyntax","_a","_b","arrayLiteralNode","hashSyntax","_c","hashLiteralNode","namedCharRefs","Aacute","aacute","Abreve","abreve","ac","acd","acE","Acirc","acirc","acute","Acy","acy","AElig","aelig","af","Afr","afr","Agrave","agrave","alefsym","aleph","Alpha","alpha","Amacr","amacr","amalg","amp","andand","And","and","andd","andslope","andv","ang","ange","angle","angmsdaa","angmsdab","angmsdac","angmsdad","angmsdae","angmsdaf","angmsdag","angmsdah","angmsd","angrt","angrtvb","angrtvbd","angsph","angst","angzarr","Aogon","aogon","Aopf","aopf","apacir","ap","apE","ape","apid","apos","ApplyFunction","approx","approxeq","Aring","aring","Ascr","ascr","Assign","asymp","asympeq","Atilde","atilde","Auml","auml","awconint","awint","backcong","backepsilon","backprime","backsim","backsimeq","Backslash","Barv","barvee","barwed","Barwed","barwedge","bbrk","bbrktbrk","bcong","Bcy","bcy","bdquo","becaus","because","Because","bemptyv","bepsi","bernou","Bernoullis","Beta","beta","beth","between","Bfr","bfr","bigcap","bigcirc","bigcup","bigodot","bigoplus","bigotimes","bigsqcup","bigstar","bigtriangledown","bigtriangleup","biguplus","bigvee","bigwedge","bkarow","blacklozenge","blacksquare","blacktriangle","blacktriangledown","blacktriangleleft","blacktriangleright","blank","blk12","blk14","blk34","bne","bnequiv","bNot","bnot","Bopf","bopf","bot","bottom","bowtie","boxbox","boxdl","boxdL","boxDl","boxDL","boxdr","boxdR","boxDr","boxDR","boxh","boxH","boxhd","boxHd","boxhD","boxHD","boxhu","boxHu","boxhU","boxHU","boxminus","boxplus","boxtimes","boxul","boxuL","boxUl","boxUL","boxur","boxuR","boxUr","boxUR","boxv","boxV","boxvh","boxvH","boxVh","boxVH","boxvl","boxvL","boxVl","boxVL","boxvr","boxvR","boxVr","boxVR","bprime","breve","Breve","brvbar","bscr","Bscr","bsemi","bsim","bsime","bsolb","bsol","bsolhsub","bull","bullet","bump","bumpE","bumpe","Bumpeq","bumpeq","Cacute","cacute","capand","capbrcup","capcap","cap","Cap","capcup","capdot","CapitalDifferentialD","caps","caret","caron","Cayleys","ccaps","Ccaron","ccaron","Ccedil","ccedil","Ccirc","ccirc","Cconint","ccups","ccupssm","Cdot","cdot","cedil","Cedilla","cemptyv","cent","centerdot","CenterDot","cfr","Cfr","CHcy","chcy","check","checkmark","Chi","chi","circ","circeq","circlearrowleft","circlearrowright","circledast","circledcirc","circleddash","CircleDot","circledR","circledS","CircleMinus","CirclePlus","CircleTimes","cir","cirE","cire","cirfnint","cirmid","cirscir","ClockwiseContourIntegral","CloseCurlyDoubleQuote","CloseCurlyQuote","clubs","clubsuit","colon","Colon","Colone","colone","coloneq","comma","commat","comp","compfn","complement","complexes","cong","congdot","Congruent","conint","Conint","ContourIntegral","copf","Copf","coprod","Coproduct","copy","COPY","copysr","CounterClockwiseContourIntegral","crarr","cross","Cross","Cscr","cscr","csub","csube","csup","csupe","ctdot","cudarrl","cudarrr","cuepr","cuesc","cularr","cularrp","cupbrcap","cupcap","CupCap","cup","Cup","cupcup","cupdot","cupor","cups","curarr","curarrm","curlyeqprec","curlyeqsucc","curlyvee","curlywedge","curren","curvearrowleft","curvearrowright","cuvee","cuwed","cwconint","cwint","cylcty","dagger","Dagger","daleth","darr","Darr","dArr","dash","Dashv","dashv","dbkarow","dblac","Dcaron","dcaron","Dcy","dcy","ddagger","ddarr","DD","dd","DDotrahd","ddotseq","deg","Del","Delta","delta","demptyv","dfisht","Dfr","dfr","dHar","dharl","dharr","DiacriticalAcute","DiacriticalDot","DiacriticalDoubleAcute","DiacriticalGrave","DiacriticalTilde","diam","diamond","Diamond","diamondsuit","diams","die","DifferentialD","digamma","disin","divide","divideontimes","divonx","DJcy","djcy","dlcorn","dlcrop","dollar","Dopf","dopf","Dot","dot","DotDot","doteq","doteqdot","DotEqual","dotminus","dotplus","dotsquare","doublebarwedge","DoubleContourIntegral","DoubleDot","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DownArrowBar","downarrow","DownArrow","Downarrow","DownArrowUpArrow","DownBreve","downdownarrows","downharpoonleft","downharpoonright","DownLeftRightVector","DownLeftTeeVector","DownLeftVectorBar","DownLeftVector","DownRightTeeVector","DownRightVectorBar","DownRightVector","DownTeeArrow","DownTee","drbkarow","drcorn","drcrop","Dscr","dscr","DScy","dscy","dsol","Dstrok","dstrok","dtdot","dtri","dtrif","duarr","duhar","dwangle","DZcy","dzcy","dzigrarr","Eacute","eacute","easter","Ecaron","ecaron","Ecirc","ecirc","ecir","ecolon","Ecy","ecy","eDDot","Edot","edot","eDot","ee","efDot","Efr","efr","eg","Egrave","egrave","egs","egsdot","Element","elinters","ell","els","elsdot","Emacr","emacr","empty","emptyset","EmptySmallSquare","emptyv","EmptyVerySmallSquare","emsp13","emsp14","emsp","ENG","eng","ensp","Eogon","eogon","Eopf","eopf","epar","eparsl","eplus","epsi","Epsilon","epsilon","epsiv","eqcirc","eqcolon","eqsim","eqslantgtr","eqslantless","Equal","equals","EqualTilde","equest","Equilibrium","equiv","equivDD","eqvparsl","erarr","erDot","escr","Escr","esdot","Esim","esim","Eta","eta","ETH","eth","Euml","euml","euro","excl","exist","Exists","expectation","exponentiale","ExponentialE","fallingdotseq","Fcy","fcy","female","ffilig","fflig","ffllig","Ffr","ffr","filig","FilledSmallSquare","FilledVerySmallSquare","fjlig","flat","fllig","fltns","fnof","Fopf","fopf","forall","ForAll","fork","forkv","Fouriertrf","fpartint","frac12","frac13","frac14","frac15","frac16","frac18","frac23","frac25","frac34","frac35","frac38","frac45","frac56","frac58","frac78","frasl","frown","fscr","Fscr","gacute","Gamma","gamma","Gammad","gammad","gap","Gbreve","gbreve","Gcedil","Gcirc","gcirc","Gcy","gcy","Gdot","gdot","ge","gE","gEl","gel","geq","geqq","geqslant","gescc","ges","gesdot","gesdoto","gesdotol","gesl","gesles","Gfr","gfr","gg","Gg","ggg","gimel","GJcy","gjcy","gla","gl","glE","glj","gnap","gnapprox","gne","gnE","gneq","gneqq","gnsim","Gopf","gopf","grave","GreaterEqual","GreaterEqualLess","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterTilde","Gscr","gscr","gsim","gsime","gsiml","gtcc","gtcir","gt","Gt","gtdot","gtlPar","gtquest","gtrapprox","gtrarr","gtrdot","gtreqless","gtreqqless","gtrless","gtrsim","gvertneqq","gvnE","Hacek","hairsp","half","hamilt","HARDcy","hardcy","harrcir","harr","hArr","harrw","Hat","hbar","Hcirc","hcirc","hearts","heartsuit","hellip","hercon","hfr","Hfr","HilbertSpace","hksearow","hkswarow","hoarr","homtht","hookleftarrow","hookrightarrow","hopf","Hopf","horbar","HorizontalLine","hscr","Hscr","hslash","Hstrok","hstrok","HumpDownHump","HumpEqual","hybull","hyphen","Iacute","iacute","ic","Icirc","icirc","Icy","icy","Idot","IEcy","iecy","iexcl","iff","ifr","Ifr","Igrave","igrave","ii","iiiint","iiint","iinfin","iiota","IJlig","ijlig","Imacr","imacr","image","ImaginaryI","imagline","imagpart","imath","Im","imof","imped","Implies","incare","in","infin","infintie","inodot","intcal","int","Int","integers","Integral","intercal","Intersection","intlarhk","intprod","InvisibleComma","InvisibleTimes","IOcy","iocy","Iogon","iogon","Iopf","iopf","Iota","iota","iprod","iquest","iscr","Iscr","isin","isindot","isinE","isins","isinsv","isinv","it","Itilde","itilde","Iukcy","iukcy","Iuml","iuml","Jcirc","jcirc","Jcy","jcy","Jfr","jfr","jmath","Jopf","jopf","Jscr","jscr","Jsercy","jsercy","Jukcy","jukcy","Kappa","kappa","kappav","Kcedil","kcedil","Kcy","kcy","Kfr","kfr","kgreen","KHcy","khcy","KJcy","kjcy","Kopf","kopf","Kscr","kscr","lAarr","Lacute","lacute","laemptyv","lagran","Lambda","lambda","lang","Lang","langd","langle","lap","Laplacetrf","laquo","larrb","larrbfs","larr","Larr","lArr","larrfs","larrhk","larrlp","larrpl","larrsim","larrtl","latail","lAtail","lat","late","lates","lbarr","lBarr","lbbrk","lbrace","lbrack","lbrke","lbrksld","lbrkslu","Lcaron","lcaron","Lcedil","lcedil","lceil","lcub","Lcy","lcy","ldca","ldquo","ldquor","ldrdhar","ldrushar","ldsh","le","lE","LeftAngleBracket","LeftArrowBar","leftarrow","LeftArrow","Leftarrow","LeftArrowRightArrow","leftarrowtail","LeftCeiling","LeftDoubleBracket","LeftDownTeeVector","LeftDownVectorBar","LeftDownVector","LeftFloor","leftharpoondown","leftharpoonup","leftleftarrows","leftrightarrow","LeftRightArrow","Leftrightarrow","leftrightarrows","leftrightharpoons","leftrightsquigarrow","LeftRightVector","LeftTeeArrow","LeftTee","LeftTeeVector","leftthreetimes","LeftTriangleBar","LeftTriangle","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVectorBar","LeftUpVector","LeftVectorBar","LeftVector","lEg","leg","leq","leqq","leqslant","lescc","les","lesdot","lesdoto","lesdotor","lesg","lesges","lessapprox","lessdot","lesseqgtr","lesseqqgtr","LessEqualGreater","LessFullEqual","LessGreater","lessgtr","LessLess","lesssim","LessSlantEqual","LessTilde","lfisht","lfloor","Lfr","lfr","lg","lgE","lHar","lhard","lharu","lharul","lhblk","LJcy","ljcy","llarr","ll","Ll","llcorner","Lleftarrow","llhard","lltri","Lmidot","lmidot","lmoustache","lmoust","lnap","lnapprox","lne","lnE","lneq","lneqq","lnsim","loang","loarr","lobrk","longleftarrow","LongLeftArrow","Longleftarrow","longleftrightarrow","LongLeftRightArrow","Longleftrightarrow","longmapsto","longrightarrow","LongRightArrow","Longrightarrow","looparrowleft","looparrowright","lopar","Lopf","lopf","loplus","lotimes","lowast","lowbar","LowerLeftArrow","LowerRightArrow","loz","lozenge","lozf","lpar","lparlt","lrarr","lrcorner","lrhar","lrhard","lrm","lrtri","lsaquo","lscr","Lscr","lsh","Lsh","lsim","lsime","lsimg","lsqb","lsquo","lsquor","Lstrok","lstrok","ltcc","ltcir","lt","Lt","ltdot","lthree","ltimes","ltlarr","ltquest","ltri","ltrie","ltrif","ltrPar","lurdshar","luruhar","lvertneqq","lvnE","macr","male","malt","maltese","mapsto","mapstodown","mapstoleft","mapstoup","marker","mcomma","Mcy","mcy","mdash","mDDot","measuredangle","MediumSpace","Mellintrf","Mfr","mfr","mho","micro","midast","midcir","mid","middot","minusb","minus","minusd","minusdu","MinusPlus","mlcp","mldr","mnplus","models","Mopf","mopf","mp","mscr","Mscr","mstpos","Mu","mu","multimap","mumap","nabla","Nacute","nacute","nang","nap","napE","napid","napos","napprox","natural","naturals","natur","nbsp","nbump","nbumpe","ncap","Ncaron","ncaron","Ncedil","ncedil","ncong","ncongdot","ncup","Ncy","ncy","ndash","nearhk","nearr","neArr","nearrow","ne","nedot","NegativeMediumSpace","NegativeThickSpace","NegativeThinSpace","NegativeVeryThinSpace","nequiv","nesear","nesim","NestedGreaterGreater","NestedLessLess","NewLine","nexist","nexists","Nfr","nfr","ngE","nge","ngeq","ngeqq","ngeqslant","nges","nGg","ngsim","nGt","ngt","ngtr","nGtv","nharr","nhArr","nhpar","ni","nis","nisd","niv","NJcy","njcy","nlarr","nlArr","nldr","nlE","nle","nleftarrow","nLeftarrow","nleftrightarrow","nLeftrightarrow","nleq","nleqq","nleqslant","nles","nless","nLl","nlsim","nLt","nlt","nltri","nltrie","nLtv","nmid","NoBreak","NonBreakingSpace","nopf","Nopf","not","NotCongruent","NotCupCap","NotDoubleVerticalBar","NotElement","NotEqual","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","NotHumpDownHump","NotHumpEqual","notin","notindot","notinE","notinva","notinvb","notinvc","NotLeftTriangleBar","NotLeftTriangle","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","notni","notniva","notnivb","notnivc","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotReverseElement","NotRightTriangleBar","NotRightTriangle","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","nparallel","npar","nparsl","npart","npolint","npr","nprcue","nprec","npreceq","npre","nrarrc","nrarr","nrArr","nrarrw","nrightarrow","nRightarrow","nrtri","nrtrie","nsc","nsccue","nsce","Nscr","nscr","nshortmid","nshortparallel","nsim","nsime","nsimeq","nsmid","nspar","nsqsube","nsqsupe","nsub","nsubE","nsube","nsubset","nsubseteq","nsubseteqq","nsucc","nsucceq","nsup","nsupE","nsupe","nsupset","nsupseteq","nsupseteqq","ntgl","Ntilde","ntilde","ntlg","ntriangleleft","ntrianglelefteq","ntriangleright","ntrianglerighteq","Nu","nu","numero","numsp","nvap","nvdash","nvDash","nVdash","nVDash","nvge","nvgt","nvHarr","nvinfin","nvlArr","nvle","nvlt","nvltrie","nvrArr","nvrtrie","nvsim","nwarhk","nwarr","nwArr","nwarrow","nwnear","Oacute","oacute","oast","Ocirc","ocirc","ocir","Ocy","ocy","odash","Odblac","odblac","odiv","odot","odsold","OElig","oelig","ofcir","Ofr","ofr","ogon","Ograve","ograve","ogt","ohbar","ohm","oint","olarr","olcir","olcross","oline","olt","Omacr","omacr","Omega","omega","Omicron","omicron","omid","ominus","Oopf","oopf","opar","OpenCurlyDoubleQuote","OpenCurlyQuote","operp","oplus","orarr","Or","or","ord","order","orderof","ordf","ordm","origof","oror","orslope","orv","oS","Oscr","oscr","Oslash","oslash","osol","Otilde","otilde","otimesas","Otimes","otimes","Ouml","ouml","ovbar","OverBar","OverBrace","OverBracket","OverParenthesis","para","parallel","par","parsim","parsl","PartialD","Pcy","pcy","percnt","period","permil","perp","pertenk","Pfr","pfr","Phi","phi","phiv","phmmat","phone","Pi","pi","pitchfork","piv","planck","planckh","plankv","plusacir","plusb","pluscir","plus","plusdo","plusdu","pluse","PlusMinus","plusmn","plussim","plustwo","pm","Poincareplane","pointint","popf","Popf","pound","prap","Pr","pr","prcue","precapprox","prec","preccurlyeq","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","preceq","precnapprox","precneqq","precnsim","prE","precsim","prime","Prime","primes","prnap","prnE","prnsim","prod","Product","profalar","profline","profsurf","prop","Proportional","Proportion","propto","prsim","prurel","Pscr","pscr","Psi","psi","puncsp","Qfr","qfr","qint","qopf","Qopf","qprime","Qscr","qscr","quaternions","quatint","quest","questeq","quot","rAarr","race","Racute","racute","radic","raemptyv","rang","Rang","rangd","rangle","raquo","rarrap","rarrb","rarrbfs","rarrc","rarr","Rarr","rArr","rarrfs","rarrhk","rarrlp","rarrpl","rarrsim","Rarrtl","rarrtl","rarrw","ratail","rAtail","ratio","rationals","rbarr","rBarr","RBarr","rbbrk","rbrace","rbrack","rbrke","rbrksld","rbrkslu","Rcaron","rcaron","Rcedil","rcedil","rceil","rcub","Rcy","rcy","rdca","rdldhar","rdquo","rdquor","rdsh","real","realine","realpart","reals","Re","rect","reg","REG","ReverseElement","ReverseEquilibrium","ReverseUpEquilibrium","rfisht","rfloor","rfr","Rfr","rHar","rhard","rharu","rharul","Rho","rho","rhov","RightAngleBracket","RightArrowBar","rightarrow","RightArrow","Rightarrow","RightArrowLeftArrow","rightarrowtail","RightCeiling","RightDoubleBracket","RightDownTeeVector","RightDownVectorBar","RightDownVector","RightFloor","rightharpoondown","rightharpoonup","rightleftarrows","rightleftharpoons","rightrightarrows","rightsquigarrow","RightTeeArrow","RightTee","RightTeeVector","rightthreetimes","RightTriangleBar","RightTriangle","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVectorBar","RightUpVector","RightVectorBar","RightVector","ring","risingdotseq","rlarr","rlhar","rlm","rmoustache","rmoust","rnmid","roang","roarr","robrk","ropar","ropf","Ropf","roplus","rotimes","RoundImplies","rpar","rpargt","rppolint","rrarr","Rrightarrow","rsaquo","rscr","Rscr","rsh","Rsh","rsqb","rsquo","rsquor","rthree","rtimes","rtri","rtrie","rtrif","rtriltri","RuleDelayed","ruluhar","rx","Sacute","sacute","sbquo","scap","Scaron","scaron","Sc","sc","sccue","sce","scE","Scedil","scedil","Scirc","scirc","scnap","scnE","scnsim","scpolint","scsim","Scy","scy","sdotb","sdot","sdote","searhk","searr","seArr","searrow","sect","semi","seswar","setminus","setmn","sext","Sfr","sfr","sfrown","sharp","SHCHcy","shchcy","SHcy","shcy","ShortDownArrow","ShortLeftArrow","shortmid","shortparallel","ShortRightArrow","ShortUpArrow","shy","Sigma","sigma","sigmaf","sigmav","sim","simdot","sime","simeq","simg","simgE","siml","simlE","simne","simplus","simrarr","slarr","SmallCircle","smallsetminus","smashp","smeparsl","smid","smile","smt","smte","smtes","SOFTcy","softcy","solbar","solb","sol","Sopf","sopf","spades","spadesuit","spar","sqcap","sqcaps","sqcup","sqcups","Sqrt","sqsub","sqsube","sqsubset","sqsubseteq","sqsup","sqsupe","sqsupset","sqsupseteq","Square","SquareIntersection","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","squarf","squ","squf","srarr","Sscr","sscr","ssetmn","ssmile","sstarf","Star","star","starf","straightepsilon","straightphi","strns","sub","Sub","subdot","subE","sube","subedot","submult","subnE","subne","subplus","subrarr","subset","Subset","subseteq","subseteqq","SubsetEqual","subsetneq","subsetneqq","subsim","subsub","subsup","succapprox","succ","succcurlyeq","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","succeq","succnapprox","succneqq","succnsim","succsim","SuchThat","sum","Sum","sung","sup1","sup2","sup3","sup","Sup","supdot","supdsub","supE","supe","supedot","Superset","SupersetEqual","suphsol","suphsub","suplarr","supmult","supnE","supne","supplus","supset","Supset","supseteq","supseteqq","supsetneq","supsetneqq","supsim","supsub","supsup","swarhk","swarr","swArr","swarrow","swnwar","szlig","Tab","target","Tau","tau","tbrk","Tcaron","tcaron","Tcedil","tcedil","Tcy","tcy","tdot","telrec","Tfr","tfr","there4","therefore","Therefore","Theta","theta","thetasym","thetav","thickapprox","thicksim","ThickSpace","ThinSpace","thinsp","thkap","thksim","THORN","thorn","tilde","Tilde","TildeEqual","TildeFullEqual","TildeTilde","timesbar","timesb","times","timesd","tint","toea","topbot","topcir","Topf","topf","topfork","tosa","tprime","trade","TRADE","triangle","triangledown","triangleleft","trianglelefteq","triangleq","triangleright","trianglerighteq","tridot","trie","triminus","TripleDot","triplus","trisb","tritime","trpezium","Tscr","tscr","TScy","tscy","TSHcy","tshcy","Tstrok","tstrok","twixt","twoheadleftarrow","twoheadrightarrow","Uacute","uacute","uarr","Uarr","uArr","Uarrocir","Ubrcy","ubrcy","Ubreve","ubreve","Ucirc","ucirc","Ucy","ucy","udarr","Udblac","udblac","udhar","ufisht","Ufr","ufr","Ugrave","ugrave","uHar","uharl","uharr","uhblk","ulcorn","ulcorner","ulcrop","ultri","Umacr","umacr","uml","UnderBar","UnderBrace","UnderBracket","UnderParenthesis","Union","UnionPlus","Uogon","uogon","Uopf","uopf","UpArrowBar","uparrow","UpArrow","Uparrow","UpArrowDownArrow","updownarrow","UpDownArrow","Updownarrow","UpEquilibrium","upharpoonleft","upharpoonright","uplus","UpperLeftArrow","UpperRightArrow","upsi","Upsi","upsih","Upsilon","upsilon","UpTeeArrow","UpTee","upuparrows","urcorn","urcorner","urcrop","Uring","uring","urtri","Uscr","uscr","utdot","Utilde","utilde","utri","utrif","uuarr","Uuml","uuml","uwangle","vangrt","varepsilon","varkappa","varnothing","varphi","varpi","varpropto","varr","vArr","varrho","varsigma","varsubsetneq","varsubsetneqq","varsupsetneq","varsupsetneqq","vartheta","vartriangleleft","vartriangleright","vBar","Vbar","vBarv","Vcy","vcy","vdash","vDash","Vdash","VDash","Vdashl","veebar","vee","Vee","veeeq","vellip","verbar","Verbar","vert","Vert","VerticalBar","VerticalLine","VerticalSeparator","VerticalTilde","VeryThinSpace","Vfr","vfr","vltri","vnsub","vnsup","Vopf","vopf","vprop","vrtri","Vscr","vscr","vsubnE","vsubne","vsupnE","vsupne","Vvdash","vzigzag","Wcirc","wcirc","wedbar","wedge","Wedge","wedgeq","weierp","Wfr","wfr","Wopf","wopf","wp","wr","wreath","Wscr","wscr","xcap","xcirc","xcup","xdtri","Xfr","xfr","xharr","xhArr","Xi","xi","xlarr","xlArr","xmap","xnis","xodot","Xopf","xopf","xoplus","xotime","xrarr","xrArr","Xscr","xscr","xsqcup","xuplus","xutri","xvee","xwedge","Yacute","yacute","YAcy","yacy","Ycirc","ycirc","Ycy","ycy","yen","Yfr","yfr","YIcy","yicy","Yopf","yopf","Yscr","yscr","YUcy","yucy","yuml","Yuml","Zacute","zacute","Zcaron","zcaron","Zcy","zcy","Zdot","zdot","zeetrf","ZeroWidthSpace","Zeta","zeta","zfr","Zfr","ZHcy","zhcy","zigrarr","zopf","Zopf","Zscr","zscr","zwj","zwnj","UNKNOWN_POSITION","SYNTHETIC_LOCATION","NON_EXISTENT_LOCATION","BROKEN_LOCATION","CHAR_OFFSET_KIND","HBS_POSITION_KIND","INTERNAL_SYNTHETIC_KIND","NON_EXISTENT_KIND","BROKEN_KIND","MatchAny","IsInvisible","WhenList","_whens","whens","first","when","When","_map","pattern","patternFor","exact","fallback","Matcher","validate","matchFor","nesteds","SourceSlice","synthetic","offsets","src","load","getString","serialize","SourceSpan","NON_EXISTENT","InvisibleSpan","serialized","forCharPositions","broken","forHbsLoc","HbsPosition","HbsSpan","startPos","endPos","CharPosition","CharPositionSpan","pos","getStart","getEnd","toHbsSpan","toHbsLoc","module","getModule","endPosition","toJSON","withStart","other","withEnd","asString","toSlice","position","locDidUpdate","collapse","where","collapsed","extend","skipStart","skipEnd","move","sliceStartChars","sliceEndChars","charPositions","charPos","locPosSpan","toHbsPos","BROKEN","toCharPosSpan","hbsPositions","providedHbsLoc","updateProvided","edge","hbsPos","charPosSpan","toCharPos","InvisiblePosition","m","rightCharPos","leftCharPos","_","SourceOffset","forHbsPos","eql","by","_locPos","hbs","locPos","hbsPosFor","_charPos","charPosNumber","charPosFor","Source","moduleName","offsetFor","spanFor","seenLines","seenChars","nextLine","sourceString","sourceLength","roundTrip","SpanList","getRangeOffset","_span","last","hasSpan","maybeLoc","generateSyntaxError","code","quotedCode","visitorKeys","TraversalError","cannotRemoveNode","cannotReplaceNode","cannotReplaceOrRemoveInKeyHandlerYet","WalkerPath","parentKey","parentNode","iterator","PathParentsIterator","getEnterFunction","enter","getExitFunction","exit","getKeyHandler","keyVisitor","keyHandler","All","getNodeHandler","visitor","visitNode","visitArray","visitKey","keyEnter","keyExit","keyPath","assignKey","spliceArray","traverse","Walker","visit","walkBody","walker","childrenFor","appendChild","isHBSLiteral","printLiteral","isUpperCase","toUpperCase","isLowerCase","_SOURCE","SOURCE","buildMustache","buildPath","buildLoc","_defaultBlock","_elseBlock","defaultBlock","elseBlock","blockItself","buildBlockParams","buildElementModifier","elementModifier","buildComment","buildMustacheComment","mustacheComment","openTag","closeTag","_closeTag","endsWith","element","buildAttr","buildText","buildSexpr","buildHead","headNode","buildThis","buildAtName","atName","var","buildHeadFromString","buildCleanPath","buildLiteral","buildPair","buildProgram","buildBlockItself","buildTemplate","buildPosition","startLine","startColumn","endLine","_source","fullPath","at","boolean","null","buildLegacyMustache","buildLegacyPath","buildLegacyLiteral","DEFAULT_STRIP","Builders","_selfClosing","elementStack","currentAttribute","currentNode","tokenizer","entityParser","EntityParser","EventedTokenizer","finish","currentAttr","currentTag","currentStartTag","currentEndTag","currentComment","currentData","acceptNode","currentElement","sourceForNode","endNode","firstLine","currentLine","firstColumn","lastLine","lastColumn","BEFORE_ATTRIBUTE_NAME","ATTRIBUTE_VALUE_UNQUOTED","HandlebarsNodeVisitors","pendingError","parseProgram","eof","poppedNode","appendToCommentData","acceptCallNodes","repairedBlock","repairBlock","nameStart","parentProgram","rawMustache","addElementModifier","beginAttributeValue","finishAttributeValue","transitionTo","appendDynamicAttributeValuePart","finalizeTextPart","isDynamic","currentPart","startTextPart","updateTokenizerLocation","tokenizePart","flushData","rawComment","partialBlock","decoratorBlock","thisHead","undef","nul","calculateRightStrippedOffsets","columns","difference","lineCount","compiler","fallbackStart","endProgram","isSpace","TokenizerEventHandlers","tagOpenLine","tagOpenColumn","reset","beginComment","finishComment","beginData","appendToData","finishData","tagOpen","beginStartTag","nameEnd","beginEndTag","finishTag","finishStartTag","finishEndTag","nameLoc","isVoid","closeTagStart","validateEndTag","markTagAsSelfClosing","appendToTagName","beginAttribute","isQuoted","valueSpan","appendToAttributeName","parsePossibleBlockParams","appendToAttributeValue","lastPart","tokenizerPos","assembleAttributeValue","attribute","ATTRIBUTE_NAME","AFTER_ATTRIBUTE_NAME","ID_INVERSE_PATTERN","as","handlers","PossibleAs","consume","BeforeStartPipe","BeforeBlockParamName","BlockParamName","AfterEndPipe","Done","peek","reportSyntaxError","assembleConcatenatedValue","preprocess","builders","publicBuilder","CodemodEntityParser","parseOptions","plugins","transform","env","pluginResult","getPathName","scopedTokens","possbleToken","includeHtmlElements","potentialLocal","addTokens","tokensSet","maybePathName","maybeFirstPathSegment","getTemplateLocals","html","includeKeywords","tokens","fields","Args","positional","PositionalArguments","named","NamedArguments","entry","NamedArgument","HtmlAttr","SplatAttr","ComponentArg","toNamedArgument","ElementModifier","GlimmerComment","HtmlText","HtmlComment","AppendContent","callee","InvokeBlock","componentArgs","SimpleElement","LiteralExpression","KeywordExpression","CallExpression","InterpolateExpression","NamedBlocks","NamedBlock","ThisReference","ArgReference","LocalVarReference","FreeVarReference","HELPER_VAR_NS","MODIFIER_VAR_NS","COMPONENT_VAR_NS","STRICT_RESOLUTION","SexpOpcodes","isAngleBracket","HTML_RESOLUTION","isStrictResolution","LooseModeResolution","namespaced","append","trustingAppend","namespaces","HELPER_NAMESPACE","MODIFIER_NAMESPACE","COMPONENT_NAMESPACE","loadResolution","SymbolTable","keywords","ProgramSymbolTable","allocate","BlockSymbolTable","templateLocals","upvars","usedTemplateLocals","root","hasLexical","lexicalScope","hasKeyword","getKeyword","allocateFree","ASTv2","getUsedTemplateLocals","getLocalsMap","getDebugInfo","customizeComponentName","allocateNamed","allocateBlock","identifier","slots","#get","slot","fromEntries","Builder","scope","namedBlock","simpleNamedBlock","BuildElement","namedArgument","splatAttr","ref","keyword","localVar","isTemplateLocal","interpolate","namedBlocks","blockStatement","blocksLoc","builder","base","simple","selfClosingComponent","componentWithDefaultBlock","componentWithNamedBlocks","SexpSyntaxContext","isSimpleCallee","ModifierSyntaxContext","BlockSyntaxContext","ComponentSyntaxContext","isSimplePath","AttrValueSyntaxContext","AppendSyntaxContext","isSimple","normalize","normalizeOptions","strictMode","BlockContext","normalizer","StatementNormalizer","astV2","TemplateChildren","assertTemplate","strict","resolutionFor","isFreeVar","printPath","printHead","isLexicalVar","hasBinding","ExpressionNormalizer","assertIllegalLiteral","callParts","headOffsets","paramList","paramLoc","namedLoc","argsLoc","keyOffsets","ElementNormalizer","lastIndexOf","BlockChildren","assertBlock","ctx","tagHead","classifyTag","childNodes","ElementChildren","tagOffsets","assertNamedBlock","assertElement","assertComponent","mustacheAttr","attrPart","nameSlice","checkArgCall","uppercase","inScope","isComponent","variableLoc","tailLength","accum","pathEnd","pathLoc","Children","hasSemanticContent","nonBlockChildren","hasBlockParams","names","printedNames","seenNames","ContentType","Helper","Empty","SafeString","Fragment","Other","InternalComponentCapabilities","dynamicLayout","dynamicTag","prepareArgs","createArgs","attributeHook","elementHook","dynamicScope","createCaller","updateHook","createInstance","wrapped","willDestroy","hasSubOwner","ARG_SHIFT","MAX_SIZE","TYPE_SIZE","TYPE_MASK","OPERAND_LEN_MASK","MACHINE_MASK","$pc","$ra","$fp","$sp","$s0","$s1","$t0","$t1","$v0","isLowLevelRegister","register","decodeCurry","curry","decodeRegister","decodePrimitive","primitive","constants","getValue","todo","label","Disassembler","addNullable","dism","d","getArray","heap","getaddr","lexical","fill","ANNOTATION_STYLES","LogFragmentBuffer","addFootnoted","subtle","showSubtle","usedNumber","substitutions","#mapLine","flush","flatMap","queued","STYLES","varReference","varBinding","specialVar","specialProp","def","builtin","punct","kw","specialString","atom","attrName","constant","dim","internals","diffAdd","diffDelete","diffChange","sublabel","errorLabel","errorMessage","unbold","pointer","pointee","focus","focusColor","mergeStyle","intoFormat","format","formats","FORMATTERS","integer","float","special","isSubtle","leaves","every","leaf","ifPresent","fragment","f","styleAll","#subtle","allFormats","#shouldShow","toLoggable","appendTo","display","footnote","appendValueAsFootnote","inline","frag","intoFragment","fragments","intoFragments","intoLeafFragment","CONSUMED_TAGS","TRANSACTION_STACK","TRANSACTION_ENV","debugMessage","objName","dirtyString","setTrackingTransactionEnv","beginTrackingTransaction","_debugLabel","debugLabel","endTrackingTransaction","resetTrackingTransaction","logTrackingStack","runInTrackingTransaction","didError","nthIndex","startingPos","makeTrackingErrorMessage","transaction","trackingStack","repeat","markTagAsConsumed","_tag","subtag","assertTagNotConsumed","hasStack","updateStackBegin","INITIAL","$REVISION","DIRYTABLE_TAG_ID","UPDATABLE_TAG_ID","COMBINATOR_TAG_ID","CONSTANT_TAG_ID","COMPUTE","Reflect","globalThis","valueForTag","TYPE","ALLOW_CYCLES","allowsCycles","MonomorphicTagImpl","combine","tags","CONSTANT_TAG","revision","lastChecked","lastValue","isUpdating","subtagBufferCache","max","subtagValue","updateTag","_subtag","dirtyTag","disableConsumptionAssertion","DIRTY_TAG","UPDATE_TAG","createUpdatableTag","tag1","tag2","tag3","consumeTag","ARRAY_GETTER_METHODS","ARRAY_WRITE_THEN_READ_METHODS","convertToInt","isNaN","TrackedArray","clone","boundFns","nativelyAccessingLengthFromWriteMethod","Proxy","isUnchanged","#readStorageFor","storage","#dirtyStorageFor","#dirtyCollection","setPrototypeOf","TrackedMap","#storageFor","storages","existing","getOrInsert","getOrInsertComputed","creator","currentKey","toStringTag","delete","TrackedSet","union","intersection","symmetricDifference","isSubsetOf","isSupersetOf","isDisjointFrom","TrackedWeakMap","TrackedWeakSet","GLIMMER_VALIDATOR_REGISTRATION","REFERENCE","UNBOUND","ReferenceImpl","lastRevision","compute","update","createPrimitiveRef","AppendTrustedHTML","AppendTextNode","AppendComment","ElementParameters","Missing","Positional","Tail","PresentList","predicate","OptionalList","toPresentArray","into","EmptyList","_predicate","ifEmpty","ResultImpl","all","results","isErr","cast","Ok","Result","OkImpl","isOk","ifOk","andThen","mapOk","ifErr","mapErr","ErrImpl","reason","Err","ResultArray","err","toOptionalList","NormalizeExpressions","Keyword","Interpolate","translated","CALL_KEYWORDS","translate","visitList","nodes","VISIT_EXPRS","VariableReference","tailLoc","mir","members","convertPathToCallIfKeyword","KeywordImpl","delegate","KEYWORD_NODES","getCalleeExpression","Keywords","_keywords","usedType","validTypes","typesToReadableName","generateTypesMessage","toAppend","CurriedTypeToReadableType","assertCurryKeyword","curriedType","readableType","stringsAllowed","definition","isStrict","translateCurryKeyword","definitionResult","argsResult","curryKeyword","assertGetDynamicVarKeyword","positionals","varName","translateGetDynamicVarKeyword","getDynamicVarKeyword","assertHasBlockKeyword","translateHasBlockKeyword","hasBlockKeyword","assertIfUnlessInlineKeyword","originalNode","truthy","falsy","translateIfUnlessInlineKeyword","conditionResult","truthyResult","falsyResult","ifUnlessInlineKeyword","assertLogKeyword","translateLogKeyword","logKeyword","APPEND_KEYWORDS","to","BLOCK_KEYWORDS","insertBefore","destination","VISIT_STMTS","destinationResult","generateUniqueCursor","blockResult","inverseResult","valueResult","keyResult","positionalResult","namedResult","blocksResult","MODIFIER_KEYWORDS","XLINK","XML","XMLNS","WHITELIST","xmlns","getAttrNamespace","DEFLATE_TAG_TABLE","INFLATE_TAG_TABLE","deflateTagName","tagName","inflateTagName","DEFLATE_ATTR_TABLE","INFLATE_ATTR_TABLE","deflateAttrName","inflateAttrName","ClassifiedElement","toStatement","prepare","prepared","rawValue","dynamicFeatures","isTrusting","typeAttr","elementParams","hasDynamicFeatures","ClassifiedComponent","ClassifiedSimpleElement","classified","NormalizationStatements","NormalizationState","_currentScope","_cursorCount","oldBlock","VALUE_RESOLUTION","COMPONENT_RESOLUTION","HELPER_RESOLUTION","MODIFIER_RESOLUTION","COMPONENT_OR_HELPER_RESOLUTION","StrictModeValidationPass","Statements","Statement","Expressions","expressions","errorFor","ElementParameter","inElement","WireFormatDebugger","_statements","formatOpcode","opcode","formatParams","formatHash","formatBlocks","formatElementParams","formatCurryType","formatBlock","parameters","ExpressionEncoder","Local","EXPR","getOp","member","WireStatements","ContentEncoder","CONTENT","stmt","visitContent","wireBlock","wireDestination","wireInsertBefore","wireTag","wirePositional","wireNamed","wireNamedBlocks","dynamicAttrOp","dynamicAttr","staticAttrOp","staticAttr","serializedBlocks","serializedBlock","nameChars","defaultId","req","require","crypto","idFn","createHash","digest","defaultOptions","precompileJSON","pass0","pass2In","pass2","SCOPE_PLACEHOLDER","precompile","usedLocals","emit","debugSymbols","blockJSON","templateJSONObject","isStrictMode","stringified","scopeFn","DEBUG","CI","calculateLocationDisplay","moduleInfo","isPath","isSubExpression","getLocalName","trackLocals","assertAgainstAttrs","isAttrs","isThisDotAttrs","available","enabled","assertAgainstNamedOutlets","sourceInformation","errorOnInputWithContent","assertMessage","assertReservedNamedArguments","isReserved","RESERVED","transformActionSyntax","isAction","insertThisAsFirstParam","transformEachInIntoEach","transformEachTrackArray","firstParam","transformInElement","originalValue","isProduction","subExpr","transformQuotedBindingsIntoJustBindings","styleAttr","getStyleAttr","validStyleAttr","onlyPart","TARGETS","transformResolutions","tracker","isLocalVariable","transformParams","transformWrapMountAndOutlet","subexpression","INTERNAL_PLUGINS","AssertAgainstAttrs","AssertAgainstNamedOutlets","AssertInputHelperWithoutBlock","AssertReservedNamedArguments","TransformActionSyntax","TransformEachInIntoEach","TransformEachTrackArray","TransformInElement","TransformQuotedBindingsIntoJustBindings","TransformResolutions","TransformWrapMountAndOutlet","RESOLUTION_MODE_TRANSFORMS","STRICT_MODE_TRANSFORMS","STRICT_MODE_KEYWORDS","SIMPLE_DASHERIZE_REGEXP","ALPHA","USER_PLUGINS","malformedComponentLookup","buildCompileOptions","_options","tagname","COMPONENT_NAME_SIMPLE_DASHERIZE_CACHE","transformsFor","compileOptions","builtInPlugins","potententialPugins","pluginsToAdd","plugin","templateString","glimmerPrecompile","compile","evaluate","precompiled","bootstrap","hasTemplate","setTemplate","selector","elements","querySelectorAll","script","templateName","getAttribute","innerHTML","emberApp","Application","emberGlimmer","hasDOM","emberEnv","initializer","initialize","__registerTemplateCompiler","ETC","emberinternalsBrowserEnvironmentIndex","emberinternalsEnvironmentIndex","emberinternalsUtilsIndex","emberCanaryFeaturesIndex","emberDebugIndex","emberDebugLibCaptureRenderTree","emberDebugLibDeprecate","emberDebugLibHandlers","emberDebugLibInspect","emberDebugLibTesting","emberDebugLibWarn","emberDeprecatedFeaturesIndex","glimmerCompiler","glimmerEnv","glimmerSyntax","glimmerUtil","glimmerVm","glimmerWireFormat","handlebarsParserIndex","emberTemplateCompilerIndex","emberTemplateCompilerLibPluginsAssertAgainstAttrs","emberTemplateCompilerLibPluginsAssertAgainstNamedOutlets","emberTemplateCompilerLibPluginsAssertInputHelperWithoutBlock","emberTemplateCompilerLibPluginsAssertReservedNamedArguments","emberTemplateCompilerLibPluginsIndex","emberTemplateCompilerLibPluginsTransformActionSyntax","emberTemplateCompilerLibPluginsTransformEachInIntoEach","emberTemplateCompilerLibPluginsTransformEachTrackArray","emberTemplateCompilerLibPluginsTransformInElement","emberTemplateCompilerLibPluginsTransformQuotedBindingsIntoJustBindings","emberTemplateCompilerLibPluginsTransformResolutions","emberTemplateCompilerLibPluginsTransformWrapMountAndOutlet","emberTemplateCompilerLibPluginsUtils","emberTemplateCompilerLibPublicApi","emberTemplateCompilerLibSystemBootstrap","emberTemplateCompilerLibSystemCalculateLocationDisplay","emberTemplateCompilerLibSystemCompileOptions","emberTemplateCompilerLibSystemCompile","emberTemplateCompilerLibSystemDasherizeComponentName","emberTemplateCompilerLibSystemInitializer","emberTemplateCompilerLibSystemPrecompile","emberTemplateCompilerLibTypes","emberTemplateCompilerMinimal","emberVersion","simpleHtmlTokenizer"],"mappings":"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AAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;cAACC,GAAG,GAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC;cAACC,GAAG,GAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,EAAE,EAAC,EAAE,CAAC;cAACC,GAAG,GAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC;cAACC,GAAG,GAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;cAACC,GAAG,GAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC;cAACC,GAAG,GAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,CAAC,EAAC,EAAE,CAAC;cAACC,GAAG,GAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC;cAACC,GAAG,GAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC;cAACC,GAAG,GAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC;UAACC,IAAAA,GAAG,GAAC,CAAC,EAAE,EAAC,EAAE,CA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AAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;cAC5vBC,aAAa,EAAE,SAASC,SAASA,CAACC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAER,EAAE,EAAES,OAAO,kBAAkBC,EAAE,eAAeC,EAAE,eAAa;UACzH;UAEA,MAAA,IAAIC,EAAE,GAAGF,EAAE,CAAC5sB,MAAM,GAAG,CAAC;UACtB,MAAA,QAAQ2sB,OAAO;UACf,QAAA,KAAK,CAAC;UACL,UAAA,OAAOC,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAEhB,QAAA,KAAK,CAAC;oBACN,IAAI,CAACC,CAAC,GAAGb,EAAE,CAACc,cAAc,CAACJ,EAAE,CAACE,EAAE,CAAC,CAAC;UAClC,UAAA;UACA,QAAA,KAAK,CAAC;UAAE,QAAA,KAAK,CAAC;UAAE,QAAA,KAAK,CAAC;UAAE,QAAA,KAAK,CAAC;UAAE,QAAA,KAAK,CAAC;UAAE,QAAA,KAAK,CAAC;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAC/H,UAAA,IAAI,CAACC,CAAC,GAAGH,EAAE,CAACE,EAAE,CAAC;UACf,UAAA;UACA,QAAA,KAAK,CAAC;oBAEF,IAAI,CAACC,CAAC,GAAG;UACPzuB,YAAAA,IAAI,EAAE,kBAAkB;sBACxBjE,KAAK,EAAE6xB,EAAE,CAACe,YAAY,CAACL,EAAE,CAACE,EAAE,CAAC,CAAC;UAC9B9a,YAAAA,KAAK,EAAEka,EAAE,CAACgB,UAAU,CAACN,EAAE,CAACE,EAAE,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC,CAAC;UACpClN,YAAAA,GAAG,EAAEsM,EAAE,CAACiB,OAAO,CAAC,IAAI,CAACN,EAAE;UACxB,WAAA;UAEL,UAAA;UACA,QAAA,KAAK,EAAE;oBAEH,IAAI,CAACE,CAAC,GAAG;UACPzuB,YAAAA,IAAI,EAAE,kBAAkB;UACxBimB,YAAAA,QAAQ,EAAEqI,EAAE,CAACE,EAAE,CAAC;UAChBzyB,YAAAA,KAAK,EAAEuyB,EAAE,CAACE,EAAE,CAAC;UACblN,YAAAA,GAAG,EAAEsM,EAAE,CAACiB,OAAO,CAAC,IAAI,CAACN,EAAE;UACxB,WAAA;UAEL,UAAA;UACA,QAAA,KAAK,EAAE;UACP,UAAA,IAAI,CAACE,CAAC,GAAGb,EAAE,CAACkB,eAAe,CAACR,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC,EAAE,IAAI,CAACD,EAAE,CAAC;UAChE,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACE,CAAC,GAAG;UAAEhV,YAAAA,IAAI,EAAE6U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAE9U,YAAAA,MAAM,EAAE4U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAE7U,YAAAA,IAAI,EAAE2U,EAAE,CAACE,EAAE,GAAC,CAAC;qBAAG;UAC7D,UAAA;UACA,QAAA,KAAK,EAAE;UACP,UAAA,IAAI,CAACC,CAAC,GAAGb,EAAE,CAACmB,YAAY,CAACT,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAACD,EAAE,CAAC;UAC9E,UAAA;UACA,QAAA,KAAK,EAAE;UACP,UAAA,IAAI,CAACE,CAAC,GAAGb,EAAE,CAACmB,YAAY,CAACT,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAACD,EAAE,CAAC;UAC7E,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACE,CAAC,GAAG;UAAElJ,YAAAA,IAAI,EAAE+I,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAE/U,YAAAA,IAAI,EAAE6U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAE9U,YAAAA,MAAM,EAAE4U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAE7U,YAAAA,IAAI,EAAE2U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAExU,YAAAA,WAAW,EAAEsU,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAE9a,YAAAA,KAAK,EAAEka,EAAE,CAACgB,UAAU,CAACN,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC;qBAAG;UAC5I,UAAA;UACA,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;oBAChB,IAAI,CAACC,CAAC,GAAG;UAAEhV,YAAAA,IAAI,EAAE6U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAE9U,YAAAA,MAAM,EAAE4U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAE7U,YAAAA,IAAI,EAAE2U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAExU,YAAAA,WAAW,EAAEsU,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAE9a,YAAAA,KAAK,EAAEka,EAAE,CAACgB,UAAU,CAACN,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC;qBAAG;UAC5H,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACC,CAAC,GAAG;UAAE/a,YAAAA,KAAK,EAAEka,EAAE,CAACgB,UAAU,CAACN,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,CAAC;sBAAE5I,OAAO,EAAE0I,EAAE,CAACE,EAAE;qBAAG;UACtE,UAAA;UACA,QAAA,KAAK,EAAE;UAEH,UAAA,IAAI3P,OAAO,GAAG+O,EAAE,CAACmB,YAAY,CAACT,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAACD,EAAE,CAAC;UAC7E3I,YAAAA,OAAO,GAAGgI,EAAE,CAACc,cAAc,CAAC,CAAC7P,OAAO,CAAC,EAAEyP,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,CAAClN,GAAG,CAAC;oBACxDsE,OAAO,CAAC5B,OAAO,GAAG,IAAI;oBAEtB,IAAI,CAACyK,CAAC,GAAG;sBAAE/a,KAAK,EAAE4a,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,CAAC9a,KAAK;UAAEkS,YAAAA,OAAO,EAAEA,OAAO;UAAEoJ,YAAAA,KAAK,EAAE;qBAAM;UAErE,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACP,CAAC,GAAG;UAAChV,YAAAA,IAAI,EAAE6U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAE9a,YAAAA,KAAK,EAAEka,EAAE,CAACgB,UAAU,CAACN,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC;qBAAE;UACjE,UAAA;UACA,QAAA,KAAK,EAAE;UACP,UAAA,IAAI,CAACC,CAAC,GAAGb,EAAE,CAACqB,eAAe,CAACrB,EAAE,CAACsB,MAAM,CAACvV,IAAI,CAAC2U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEZ,EAAE,CAACiB,OAAO,CAAC,IAAI,CAACN,EAAE,CAAC,EAAE;UAAEX,YAAAA,EAAE,EAAAA,EAAA;UAAEsB,YAAAA,MAAM,EAAE;UAAM,WAAE,CAAC,EAAE,EAAE,EAAElzB,SAAS,EAAEsyB,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEZ,EAAE,CAACgB,UAAU,CAACN,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC,CAAC,EAAE,IAAI,CAACD,EAAE,CAAC;UACrK,UAAA;UACA,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;oBAChB,IAAI,CAACE,CAAC,GAAGb,EAAE,CAACqB,eAAe,CAACX,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEZ,EAAE,CAACgB,UAAU,CAACN,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC,CAAC,EAAE,IAAI,CAACD,EAAE,CAAC;UAC7G,UAAA;UACA,QAAA,KAAK,EAAE;oBAEH,IAAI,CAACE,CAAC,GAAG;UACPzuB,YAAAA,IAAI,EAAE,kBAAkB;UACxBqB,YAAAA,IAAI,EAAEitB,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UACd9U,YAAAA,MAAM,EAAE4U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAChB7U,YAAAA,IAAI,EAAE2U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UACd5D,YAAAA,MAAM,EAAE,EAAE;UACVlX,YAAAA,KAAK,EAAEka,EAAE,CAACgB,UAAU,CAACN,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC,CAAC;UACtClN,YAAAA,GAAG,EAAEsM,EAAE,CAACiB,OAAO,CAAC,IAAI,CAACN,EAAE;UACxB,WAAA;UAEL,UAAA;UACA,QAAA,KAAK,EAAE;UACP,UAAA,IAAI,CAACE,CAAC,GAAGb,EAAE,CAACuB,mBAAmB,CAACb,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC,EAAE,IAAI,CAACD,EAAE,CAAC;UACpE,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACE,CAAC,GAAG;UAAEhV,YAAAA,IAAI,EAAE6U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAE9U,YAAAA,MAAM,EAAE4U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAE7U,YAAAA,IAAI,EAAE2U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAAE9a,YAAAA,KAAK,EAAEka,EAAE,CAACgB,UAAU,CAACN,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC;qBAAG;UACrG,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACC,CAAC,GAAGb,EAAE,CAACsB,MAAM,CAACvV,IAAI,CAAC2U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEZ,EAAE,CAACiB,OAAO,CAAC,IAAI,CAACN,EAAE,CAAC,EAAE;UAAEX,YAAAA,EAAE,EAAAA,EAAA;UAAEsB,YAAAA,MAAM,EAAE;UAAM,WAAE,CAAC;UAC9E,UAAA;UACA,QAAA,KAAK,EAAE;oBAEH,IAAI,CAACT,CAAC,GAAG;UACPzuB,YAAAA,IAAI,EAAE,eAAe;UACrByZ,YAAAA,IAAI,EAAE6U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UACd9U,YAAAA,MAAM,EAAE4U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAChB7U,YAAAA,IAAI,EAAE2U,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UACdlN,YAAAA,GAAG,EAAEsM,EAAE,CAACiB,OAAO,CAAC,IAAI,CAACN,EAAE;UACxB,WAAA;UAEL,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACE,CAAC,GAAG;UAACzuB,YAAAA,IAAI,EAAE,MAAM;UAAEomB,YAAAA,KAAK,EAAEkI,EAAE,CAACE,EAAE,CAAC;UAAElN,YAAAA,GAAG,EAAEsM,EAAE,CAACiB,OAAO,CAAC,IAAI,CAACN,EAAE;qBAAE;UAChE,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACE,CAAC,GAAG;UAACzuB,YAAAA,IAAI,EAAE,UAAU;sBAAEnB,GAAG,EAAE+uB,EAAE,CAACrtB,EAAE,CAAC+tB,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,CAAC;UAAEzyB,YAAAA,KAAK,EAAEuyB,EAAE,CAACE,EAAE,CAAC;UAAElN,YAAAA,GAAG,EAAEsM,EAAE,CAACiB,OAAO,CAAC,IAAI,CAACN,EAAE;qBAAE;UAC1F,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACE,CAAC,GAAGb,EAAE,CAACsB,MAAM,CAACE,MAAM,CAACd,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEZ,EAAE,CAACiB,OAAO,CAAC,IAAI,CAACN,EAAE,CAAC,EAAE;UAAEX,YAAAA,EAAE,EAAAA,EAAA;UAAEsB,YAAAA,MAAM,EAAE;UAAM,WAAE,CAAC;UAChF,UAAA;UACA,QAAA,KAAK,EAAE;UACP,UAAA,IAAI,CAACT,CAAC,GAAGb,EAAE,CAACrtB,EAAE,CAAC+tB,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,CAAC;UACxB,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACC,CAAC,GAAG;UAACzuB,YAAAA,IAAI,EAAE,eAAe;UAAEjE,YAAAA,KAAK,EAAEuyB,EAAE,CAACE,EAAE,CAAC;UAAEvI,YAAAA,QAAQ,EAAEqI,EAAE,CAACE,EAAE,CAAC;UAAElN,YAAAA,GAAG,EAAEsM,EAAE,CAACiB,OAAO,CAAC,IAAI,CAACN,EAAE;qBAAE;UAC3F,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACE,CAAC,GAAG;UAACzuB,YAAAA,IAAI,EAAE,eAAe;UAAEjE,YAAAA,KAAK,EAAEszB,MAAM,CAACf,EAAE,CAACE,EAAE,CAAC,CAAC;UAAEvI,YAAAA,QAAQ,EAAEoJ,MAAM,CAACf,EAAE,CAACE,EAAE,CAAC,CAAC;UAAElN,YAAAA,GAAG,EAAEsM,EAAE,CAACiB,OAAO,CAAC,IAAI,CAACN,EAAE;qBAAE;UAC3G,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACE,CAAC,GAAG;UAACzuB,YAAAA,IAAI,EAAE,gBAAgB;UAAEjE,YAAAA,KAAK,EAAEuyB,EAAE,CAACE,EAAE,CAAC,KAAK,MAAM;UAAEvI,YAAAA,QAAQ,EAAEqI,EAAE,CAACE,EAAE,CAAC,KAAK,MAAM;UAAElN,YAAAA,GAAG,EAAEsM,EAAE,CAACiB,OAAO,CAAC,IAAI,CAACN,EAAE;qBAAE;UAClH,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACE,CAAC,GAAG;UAACzuB,YAAAA,IAAI,EAAE,kBAAkB;UAAEimB,YAAAA,QAAQ,EAAEjqB,SAAS;UAAED,YAAAA,KAAK,EAAEC,SAAS;UAAEslB,YAAAA,GAAG,EAAEsM,EAAE,CAACiB,OAAO,CAAC,IAAI,CAACN,EAAE;qBAAE;UACpG,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACE,CAAC,GAAG;UAACzuB,YAAAA,IAAI,EAAE,aAAa;UAAEimB,YAAAA,QAAQ,EAAE,IAAI;UAAElqB,YAAAA,KAAK,EAAE,IAAI;UAAEulB,YAAAA,GAAG,EAAEsM,EAAE,CAACiB,OAAO,CAAC,IAAI,CAACN,EAAE;qBAAE;UACrF,UAAA;UACA,QAAA,KAAK,EAAE;UACP,UAAA,IAAI,CAACE,CAAC,GAAGb,EAAE,CAAC0B,WAAW,CAAC,IAAI,EAAE,KAAK,EAAEhB,EAAE,CAACE,EAAE,CAAC,EAAE,IAAI,CAACD,EAAE,CAAC;UACrD,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACE,CAAC,GAAGb,EAAE,CAAC0B,WAAW,CAAC,KAAK,EAAEhB,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,EAAEF,EAAE,CAACE,EAAE,CAAC,EAAE,IAAI,CAACD,EAAE,CAAC;UACzD,UAAA;UACA,QAAA,KAAK,EAAE;UACP,UAAA,IAAI,CAACE,CAAC,GAAGb,EAAE,CAAC0B,WAAW,CAAC,KAAK,EAAE,KAAK,EAAEhB,EAAE,CAACE,EAAE,CAAC,EAAE,IAAI,CAACD,EAAE,CAAC;UACtD,UAAA;UACA,QAAA,KAAK,EAAE;UACND,UAAAA,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,CAAC5tB,IAAI,CAAC;sBAAC8jB,IAAI,EAAEkJ,EAAE,CAACrtB,EAAE,CAAC+tB,EAAE,CAACE,EAAE,CAAC,CAAC;UAAEvI,YAAAA,QAAQ,EAAEqI,EAAE,CAACE,EAAE,CAAC;UAAEe,YAAAA,SAAS,EAAEjB,EAAE,CAACE,EAAE,GAAC,CAAC;UAAC,WAAC,CAAC;oBAAE,IAAI,CAACC,CAAC,GAAGH,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC;UAC/F,UAAA;UACA,QAAA,KAAK,EAAE;oBACP,IAAI,CAACC,CAAC,GAAG,CAAC;sBAAC/J,IAAI,EAAEkJ,EAAE,CAACrtB,EAAE,CAAC+tB,EAAE,CAACE,EAAE,CAAC,CAAC;sBAAEvI,QAAQ,EAAEqI,EAAE,CAACE,EAAE;UAAC,WAAC,CAAC;UAClD,UAAA;UACA,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,GAAG;UAAE,QAAA,KAAK,GAAG;oBAC5G,IAAI,CAACC,CAAC,GAAG,EAAE;UACX,UAAA;UACA,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,EAAE;UAAE,QAAA,KAAK,GAAG;UAAE,QAAA,KAAK,GAAG;UAAE,QAAA,KAAK,GAAG;UAAE,QAAA,KAAK,GAAG;UAChIH,UAAAA,EAAE,CAACE,EAAE,GAAC,CAAC,CAAC,CAAC5tB,IAAI,CAAC0tB,EAAE,CAACE,EAAE,CAAC,CAAC;UACrB,UAAA;UACA,QAAA,KAAK,GAAG;UAAE,QAAA,KAAK,GAAG;oBAClB,IAAI,CAACC,CAAC,GAAG,CAACH,EAAE,CAACE,EAAE,CAAC,CAAC;UACjB,UAAA;UACA;cACA,CAAC;cACDgB,KAAK,EAAE,CAACnE,CAAC,CAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAACE,GAAG,EAAC;UAAC,MAAA,CAAC,EAAC,CAAC;UAAC,MAAA,CAAC,EAAC,CAAC;UAAC,MAAA,CAAC,EAAC;UAAC,KAAC,CAAC,EAAC;gBAAC,CAAC,EAAC,CAAC,CAAC;UAAC,KAAC,EAAC;UAAC,MAAA,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC;UAAC,KAAC,EAACF,CAAC,CAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAC;UAAC,MAAA,CAAC,EAAC,CAAC;UAAC,MAAA,CAAC,EAAC,CAAC;UAAC,MAAA,CAAC,EAAC,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAACG,GAAG;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;UAAC,KAAC,CAAC,EAAC;UAAC,MAAA,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC;UAAC,KAAC,EAACH,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACJ,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAACJ,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAACJ,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAACJ,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAACJ,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAACJ,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAACJ,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACR,GAAG;UAAC,MAAA,EAAE,EAACS,GAAG;UAAC,MAAA,EAAE,EAACP,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAACb,CAAC,CAACe,GAAG,EAACb,GAAG,EAAC;UAAC,MAAA,CAAC,EAAC,CAAC;UAAC,MAAA,CAAC,EAAC;UAAE,KAAC,CAAC,EAACF,CAAC,CAACgB,GAAG,EAACd,GAAG,EAAC;UAAC,MAAA,CAAC,EAAC,CAAC;UAAC,MAAA,CAAC,EAAC;eAAG,CAAC,EAACF,CAAC,CAACiB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACZ,GAAG;UAAC,MAAA,EAAE,EAACS,GAAG;UAAC,MAAA,EAAE,EAACP,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAACb,CAAC,CAACkB,GAAG,EAAChB,GAAG,EAAC;UAAC,MAAA,CAAC,EAAC,CAAC;UAAC,MAAA,CAAC,EAAC;UAAE,KAAC,CAAC,EAACF,CAAC,CAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACK,GAAG;UAAC,MAAA,EAAE,EAACS,GAAG;UAAC,MAAA,EAAE,EAACP,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACR,GAAG;UAAC,MAAA,EAAE,EAACS,GAAG;UAAC,MAAA,EAAE,EAACP,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACR,GAAG;UAAC,MAAA,EAAE,EAACS,GAAG;UAAC,MAAA,EAAE,EAACP,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACR,GAAG;UAAC,MAAA,EAAE,EAACS,GAAG;UAAC,MAAA,EAAE,EAACP,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;eAAE,EAACb,CAAC,CAACmB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC;eAAG,CAAC,EAACnB,CAAC,CAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;eAAE,CAAC,EAACA,CAAC,CAACoB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACpB,CAAC,CAACoB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC;UAAG,KAAC,CAAC,EAACtB,CAAC,CAACuB,GAAG,EAAC,CAAC,CAAC,EAAC,GAAG,CAAC,CAAC,EAACvB,CAAC,CAACoB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACpB,CAAC,CAACoB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACpB,CAAC,CAACoB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACpB,CAAC,CAACoB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACpB,CAAC,CAACoB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACpB,CAAC,CAACoB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACpB,CAAC,CAACoB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACpB,CAAC,CAACwB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACxB,CAAC,CAACwB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACxB,CAAC,CAAC,CAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC,EAACyB,GAAG,EAAC;UAAC,MAAA,EAAE,EAACC;eAAI,CAAC,EAAC1B,CAAC,CAACoB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC;UAAG,KAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAACR,GAAG;UAAC,MAAA,EAAE,EAAC;eAAG,EAACd,CAAC,CAAC2B,GAAG,EAAC,CAAC,CAAC,EAAC,GAAG,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACtB,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;eAAG,EAACb,CAAC,CAAC4B,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC;eAAG,CAAC,EAAC5B,CAAC,CAACwB,GAAG,EAACC,GAAG,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACI,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;UAAC,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACA,GAAG;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;UAAC,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC3B,GAAG;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;eAAE,EAACH,CAAC,CAACmB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACY;eAAI,EAAC/B,CAAC,CAACgC,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACX,GAAG;UAAC,MAAA,EAAE,EAACC;eAAI,EAACtB,CAAC,CAACgC,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC;eAAG,CAAC,EAAChC,CAAC,CAACiC,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC;eAAG,CAAC,EAACjC,CAAC,CAACmB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,CAAC,EAACnB,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;eAAG,EAACb,CAAC,CAACuB,GAAG,EAAC,CAAC,CAAC,EAAC,GAAG,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAACG;UAAG,KAAC,EAAC;UAAC,MAAA,EAAE,EAACZ,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;UAAC,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;UAAC,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACT,GAAG;UAAC,MAAA,EAAE,EAACS,GAAG;UAAC,MAAA,EAAE,EAACP,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;eAAE,EAACb,CAAC,CAACoB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC;UAAG,KAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACjB,GAAG;UAAC,MAAA,EAAE,EAACS,GAAG;UAAC,MAAA,EAAE,EAACP,GAAG;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;eAAE,EAACb,CAAC,CAACkC,GAAG,EAAC,CAAC,CAAC,EAAC,GAAG,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC7B,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAACkB;UAAG,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;UAAC,KAAC,EAAC/B,CAAC,CAACe,GAAG,EAACb,GAAG,EAAC;UAAC,MAAA,CAAC,EAAC,CAAC;UAAC,MAAA,CAAC,EAAC;UAAG,KAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;UAAC,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACG,GAAG;UAAC,MAAA,EAAE,EAACS,GAAG;UAAC,MAAA,EAAE,EAACP,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAACb,CAAC,CAACkB,GAAG,EAAChB,GAAG,EAAC;UAAC,MAAA,CAAC,EAAC,CAAC;UAAC,MAAA,CAAC,EAAC;UAAG,KAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC6B;UAAG,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;eAAE,EAAC/B,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACJ,CAAC,CAACiB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACZ,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;eAAG,EAACb,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACS,GAAG;UAAC,MAAA,EAAE,EAACP,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;eAAG,EAACb,CAAC,CAACmC,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC9B,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC;eAAI,CAAC,EAACb,CAAC,CAACmC,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC9B,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC;UAAG,KAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACR,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACR,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG;eAAE,EAACb,CAAC,CAACmB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;eAAE,EAACnB,CAAC,CAACoB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC;eAAI,CAAC,EAACtB,CAAC,CAACuB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACvB,CAAC,CAACwB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACxB,CAAC,CAACwB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACxB,CAAC,CAAC2B,GAAG,EAAC,CAAC,CAAC,EAAC,GAAG,CAAC,CAAC,EAAC3B,CAAC,CAACwB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACnB,GAAG;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG,CAAC;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC;UAAE,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG;eAAE,EAACb,CAAC,CAAC4B,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;eAAE,EAAC5B,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACyB,GAAG;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;eAAE,EAAC9B,CAAC,CAACgC,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC;UAAG,KAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;eAAE,EAAChC,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG;eAAE,EAACJ,CAAC,CAACmB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;UAAC,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG;UAAC,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAACiB;eAAI,EAACpC,CAAC,CAACgC,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAChC,CAAC,CAACmC,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAACC;eAAI,EAACpC,CAAC,CAACgC,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAChC,CAAC,CAACmC,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG;eAAE,EAACnC,CAAC,CAACiC,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;UAAC,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG;eAAE,EAACjC,CAAC,CAACmB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;eAAE,EAACnB,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG;eAAE,EAACJ,CAAC,CAACkC,GAAG,EAAC,CAAC,CAAC,EAAC,GAAG,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG;eAAE,EAAClC,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;UAAC,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;eAAE,EAACJ,CAAC,CAACmC,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,EAAE;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC9B,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC,GAAG;UAAC,MAAA,EAAE,EAACC;eAAI,CAAC,EAACb,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACJ,CAAC,CAACI,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG;UAAC,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;UAAC,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG,CAAC;UAAC,MAAA,EAAE,EAAC;UAAG,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG;UAAC,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;UAAC,KAAC,EAACJ,CAAC,CAACiB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACjB,CAAC,CAACkB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAClB,CAAC,CAACwB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAAC,GAAG;UAAC,MAAA,EAAE,EAACY;UAAG,KAAC,EAACpC,CAAC,CAACgC,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAChC,CAAC,CAACmC,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAACnC,CAAC,CAACe,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG;eAAE,EAACf,CAAC,CAACqC,GAAG,EAAC,CAAC,CAAC,EAAC,GAAG,CAAC,CAAC,EAACrC,CAAC,CAACgB,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,GAAG;UAAC,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;UAAC,KAAC,EAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE;eAAE,EAAChB,CAAC,CAACqC,GAAG,EAAC,CAAC,CAAC,EAAC,GAAG,CAAC,CAAC,EAACrC,CAAC,CAACe,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,CAAC;UAC1mKqD,IAAAA,cAAc,EAAE;UAAC,MAAA,CAAC,EAAC,CAAC,CAAC,EAAC,CAAC,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,EAAE,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,GAAG,EAAC,CAAC,CAAC,EAAC,GAAG,CAAC;UAAC,MAAA,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE,CAAC;UAAC,MAAA,GAAG,EAAC,CAAC,CAAC,EAAC,EAAE;eAAE;UAC1NC,IAAAA,UAAU,EAAE,SAASA,UAAUA,CAAEhxB,GAAG,EAAEib,IAAI,EAAA;gBACtC,IAAIA,IAAI,CAACgW,WAAW,EAAE;UAClB,QAAA,IAAI,CAAChC,KAAK,CAACjvB,GAAG,CAAC;UACnB,MAAA,CAAC,MAAM;UACH,QAAA,IAAImJ,KAAK,GAAG,IAAIlC,KAAK,CAACjH,GAAG,CAAC;kBAC1BmJ,KAAK,CAAC8R,IAAI,GAAGA,IAAI;UACjB,QAAA,MAAM9R,KAAK;UACf,MAAA;cACJ,CAAC;UACD+nB,IAAAA,KAAK,EAAE,SAASA,KAAKA,CAACne,KAAK,EAAA;gBACvB,IAAI3W,IAAI,GAAG,IAAI;kBAAEwM,KAAK,GAAG,CAAC,CAAC,CAAC;UAAEuoB,QAAaC,MAAM,GAAG,CAAC,IAAI,CAAC;UAAEC,QAAAA,MAAM,GAAG,EAAE;kBAAEP,KAAK,GAAG,IAAI,CAACA,KAAK;UAAEtB,QAAAA,MAAM,GAAG,EAAE;UAAEE,QAAAA,QAAQ,GAAG,CAAC;UAAED,QAAAA,MAAM,GAAG,CAAC;UAAE6B,QAAgBC,MAAM,GAAG,CAAC;UAAEC,QAAAA,GAAG,GAAG;gBACtK,IAAIrlB,IAAI,GAAGklB,MAAM,CAAC/nB,KAAK,CAAChK,IAAI,CAAC0F,SAAS,EAAE,CAAC,CAAC;gBAC1C,IAAIysB,KAAK,GAAGp1B,MAAM,CAAC6D,MAAM,CAAC,IAAI,CAACuxB,KAAK,CAAC;UACrC,MAAA,IAAIC,WAAW,GAAG;UAAExC,QAAAA,EAAE,EAAE;iBAAI;UAC5B,MAAA,KAAK,IAAIlpB,CAAC,IAAI,IAAI,CAACkpB,EAAE,EAAE;UACnB,QAAA,IAAI7yB,MAAM,CAAC+C,SAAS,CAACC,cAAc,CAACC,IAAI,CAAC,IAAI,CAAC4vB,EAAE,EAAElpB,CAAC,CAAC,EAAE;oBAClD0rB,WAAW,CAACxC,EAAE,CAAClpB,CAAC,CAAC,GAAG,IAAI,CAACkpB,EAAE,CAAClpB,CAAC,CAAC;UAClC,QAAA;UACJ,MAAA;gBACAyrB,KAAK,CAACE,QAAQ,CAAC5e,KAAK,EAAE2e,WAAW,CAACxC,EAAE,CAAC;UACrCwC,MAAAA,WAAW,CAACxC,EAAE,CAACuC,KAAK,GAAGA,KAAK;UAC5BC,MAAAA,WAAW,CAACxC,EAAE,CAACxC,MAAM,GAAG,IAAI;UAC5B,MAAA,IAAI,OAAO+E,KAAK,CAACG,MAAM,IAAI,WAAW,EAAE;kBACpCH,KAAK,CAACG,MAAM,GAAG,EAAE;UACrB,MAAA;UACA,MAAA,IAAIC,KAAK,GAAGJ,KAAK,CAACG,MAAM;UACxBP,MAAAA,MAAM,CAACnvB,IAAI,CAAC2vB,KAAK,CAAC;gBAClB,IAAIC,MAAM,GAAGL,KAAK,CAAC/pB,OAAO,IAAI+pB,KAAK,CAAC/pB,OAAO,CAACoqB,MAAM;gBAClD,IAAI,OAAOJ,WAAW,CAACxC,EAAE,CAAC8B,UAAU,KAAK,UAAU,EAAE;UACjD,QAAA,IAAI,CAACA,UAAU,GAAGU,WAAW,CAACxC,EAAE,CAAC8B,UAAU;UAC/C,MAAA,CAAC,MAAM;kBACH,IAAI,CAACA,UAAU,GAAG30B,MAAM,CAACkJ,cAAc,CAAC,IAAI,CAAC,CAACyrB,UAAU;UAC5D,MAAA;UAMAe,MACI,IAAIC,GAAG,GAAG,YAAA;UACN,QAAA,IAAIC,KAAK;UACTA,QAAAA,KAAK,GAAGR,KAAK,CAACO,GAAG,EAAE,IAAIR,GAAG;UAC1B,QAAA,IAAI,OAAOS,KAAK,KAAK,QAAQ,EAAE;oBAC3BA,KAAK,GAAG71B,IAAI,CAAC+yB,QAAQ,CAAC8C,KAAK,CAAC,IAAIA,KAAK;UACzC,QAAA;UACA,QAAA,OAAOA,KAAK;gBAChB,CAAC;UACL,MAAA,IAAIhwB,MAAM;kBAAkBiwB,KAAK;kBAAE5J,MAAM;kBAAKviB,CAAC;UAAEosB,QAAAA,KAAK,GAAG,EAAE;kBAAE5Y,CAAC;kBAAExF,GAAG;kBAAEqe,QAAQ;kBAAEC;UAC/E,MAAA,OAAO,IAAI,EAAE;kBACTH,KAAK,GAAGtpB,KAAK,CAACA,KAAK,CAAC5F,MAAM,GAAG,CAAC,CAAC;UAC/B,QAAA,IAAI,IAAI,CAAC+tB,cAAc,CAACmB,KAAK,CAAC,EAAE;UAC5B5J,UAAAA,MAAM,GAAG,IAAI,CAACyI,cAAc,CAACmB,KAAK,CAAC;UACvC,QAAA,CAAC,MAAM;oBACH,IAAIjwB,MAAM,KAAK,IAAI,IAAI,OAAOA,MAAM,IAAI,WAAW,EAAE;sBACjDA,MAAM,GAAG+vB,GAAG,EAAE;UAClB,UAAA;UACA1J,UAAAA,MAAM,GAAGwI,KAAK,CAACoB,KAAK,CAAC,IAAIpB,KAAK,CAACoB,KAAK,CAAC,CAACjwB,MAAM,CAAC;UACjD,QAAA;UACY,QAAA,IAAI,OAAOqmB,MAAM,KAAK,WAAW,IAAI,CAACA,MAAM,CAACtlB,MAAM,IAAI,CAACslB,MAAM,CAAC,CAAC,CAAC,EAAE;oBACvE,IAAIgK,MAAM,GAAG,EAAE;UACfD,UAAAA,QAAQ,GAAG,EAAE;UACb,UAAA,KAAK9Y,CAAC,IAAIuX,KAAK,CAACoB,KAAK,CAAC,EAAE;sBACpB,IAAI,IAAI,CAAC9C,UAAU,CAAC7V,CAAC,CAAC,IAAIA,CAAC,GAAGgY,MAAM,EAAE;UAClCc,cAAAA,QAAQ,CAACnwB,IAAI,CAAC,IAAI,GAAG,IAAI,CAACktB,UAAU,CAAC7V,CAAC,CAAC,GAAG,IAAI,CAAC;UACnD,YAAA;UACJ,UAAA;oBACA,IAAIkY,KAAK,CAACc,YAAY,EAAE;UACpBD,YAAAA,MAAM,GAAG,sBAAsB,IAAI5C,QAAQ,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG+B,KAAK,CAACc,YAAY,EAAE,GAAG,cAAc,GAAGF,QAAQ,CAAC9oB,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,IAAI,CAAC6lB,UAAU,CAACntB,MAAM,CAAC,IAAIA,MAAM,CAAC,GAAG,IAAI;UACpL,UAAA,CAAC,MAAM;UACHqwB,YAAAA,MAAM,GAAG,sBAAsB,IAAI5C,QAAQ,GAAG,CAAC,CAAC,GAAG,eAAe,IAAIztB,MAAM,IAAIuvB,GAAG,GAAG,cAAc,GAAG,IAAI,IAAI,IAAI,CAACpC,UAAU,CAACntB,MAAM,CAAC,IAAIA,MAAM,CAAC,GAAG,IAAI,CAAC;UAC7J,UAAA;UACA,UAAA,IAAI,CAAC+uB,UAAU,CAACsB,MAAM,EAAE;sBACpB7P,IAAI,EAAEgP,KAAK,CAAC7uB,KAAK;sBACjBqvB,KAAK,EAAE,IAAI,CAAC7C,UAAU,CAACntB,MAAM,CAAC,IAAIA,MAAM;sBACxCsT,IAAI,EAAEkc,KAAK,CAAC/B,QAAQ;UACpB9M,YAAAA,GAAG,EAAEiP,KAAK;UACVQ,YAAAA,QAAQ,EAAEA;qBACb,CAAC;UACN,QAAA;UACJ,QAAA,IAAI/J,MAAM,CAAC,CAAC,CAAC,YAAYhqB,KAAK,IAAIgqB,MAAM,CAACtlB,MAAM,GAAG,CAAC,EAAE;oBACjD,MAAM,IAAIiE,KAAK,CAAC,mDAAmD,GAAGirB,KAAK,GAAG,WAAW,GAAGjwB,MAAM,CAAC;UACvG,QAAA;kBACA,QAAQqmB,MAAM,CAAC,CAAC,CAAC;UACjB,UAAA,KAAK,CAAC;UACF1f,YAAAA,KAAK,CAAC1G,IAAI,CAACD,MAAM,CAAC;UAClBmvB,YAAAA,MAAM,CAAClvB,IAAI,CAACuvB,KAAK,CAACjC,MAAM,CAAC;UACzB6B,YAAAA,MAAM,CAACnvB,IAAI,CAACuvB,KAAK,CAACG,MAAM,CAAC;UACzBhpB,YAAAA,KAAK,CAAC1G,IAAI,CAAComB,MAAM,CAAC,CAAC,CAAC,CAAC;UACrBrmB,YAAAA,MAAM,GAAG,IAAI;sBACQ;wBACjBwtB,MAAM,GAAGgC,KAAK,CAAChC,MAAM;wBACrBD,MAAM,GAAGiC,KAAK,CAACjC,MAAM;wBACrBE,QAAQ,GAAG+B,KAAK,CAAC/B,QAAQ;wBACzBmC,KAAK,GAAGJ,KAAK,CAACG,MAAM;UAIxB,YAAA;UAIA,YAAA;UACJ,UAAA,KAAK,CAAC;UACF7d,YAAAA,GAAG,GAAG,IAAI,CAACsb,YAAY,CAAC/G,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;sBACrC6J,KAAK,CAACpC,CAAC,GAAGqB,MAAM,CAACA,MAAM,CAACpuB,MAAM,GAAG+Q,GAAG,CAAC;sBACrCoe,KAAK,CAACtC,EAAE,GAAG;UACP2C,cAAAA,UAAU,EAAEnB,MAAM,CAACA,MAAM,CAACruB,MAAM,IAAI+Q,GAAG,IAAI,CAAC,CAAC,CAAC,CAACye,UAAU;wBACzDC,SAAS,EAAEpB,MAAM,CAACA,MAAM,CAACruB,MAAM,GAAG,CAAC,CAAC,CAACyvB,SAAS;UAC9CC,cAAAA,YAAY,EAAErB,MAAM,CAACA,MAAM,CAACruB,MAAM,IAAI+Q,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC2e,YAAY;wBAC7DC,WAAW,EAAEtB,MAAM,CAACA,MAAM,CAACruB,MAAM,GAAG,CAAC,CAAC,CAAC2vB;UAC1C,aAAA;UACD,YAAA,IAAIb,MAAM,EAAE;UACRK,cAAAA,KAAK,CAACtC,EAAE,CAAC+C,KAAK,GAAG,CACbvB,MAAM,CAACA,MAAM,CAACruB,MAAM,IAAI+Q,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC6e,KAAK,CAAC,CAAC,CAAC,EAC3CvB,MAAM,CAACA,MAAM,CAACruB,MAAM,GAAG,CAAC,CAAC,CAAC4vB,KAAK,CAAC,CAAC,CAAC,CACrC;UACL,YAAA;UACA7sB,YAAAA,CAAC,GAAG,IAAI,CAACupB,aAAa,CAACvqB,KAAK,CAACotB,KAAK,EAAE,CAChC3C,MAAM,EACNC,MAAM,EACNC,QAAQ,EACRgC,WAAW,CAACxC,EAAE,EACd5G,MAAM,CAAC,CAAC,CAAC,EACT8I,MAAM,EACNC,MAAM,CACT,CAACjK,MAAM,CAACjb,IAAI,CAAC,CAAC;UACf,YAAA,IAAI,OAAOpG,CAAC,KAAK,WAAW,EAAE;UAC1B,cAAA,OAAOA,CAAC;UACZ,YAAA;UACA,YAAA,IAAIgO,GAAG,EAAE;UACLnL,cAAAA,KAAK,GAAGA,KAAK,CAACU,KAAK,CAAC,CAAC,EAAE,EAAE,GAAGyK,GAAG,GAAG,CAAC,CAAC;wBACpCqd,MAAM,GAAGA,MAAM,CAAC9nB,KAAK,CAAC,CAAC,EAAE,EAAE,GAAGyK,GAAG,CAAC;wBAClCsd,MAAM,GAAGA,MAAM,CAAC/nB,KAAK,CAAC,CAAC,EAAE,EAAE,GAAGyK,GAAG,CAAC;UACtC,YAAA;UACAnL,YAAAA,KAAK,CAAC1G,IAAI,CAAC,IAAI,CAACmtB,YAAY,CAAC/G,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UAC3C8I,YAAAA,MAAM,CAAClvB,IAAI,CAACiwB,KAAK,CAACpC,CAAC,CAAC;UACpBsB,YAAAA,MAAM,CAACnvB,IAAI,CAACiwB,KAAK,CAACtC,EAAE,CAAC;sBACrBuC,QAAQ,GAAGtB,KAAK,CAACloB,KAAK,CAACA,KAAK,CAAC5F,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC4F,KAAK,CAACA,KAAK,CAAC5F,MAAM,GAAG,CAAC,CAAC,CAAC;UAClE4F,YAAAA,KAAK,CAAC1G,IAAI,CAACkwB,QAAQ,CAAC;UACpB,YAAA;UACJ,UAAA,KAAK,CAAC;UACF,YAAA,OAAO,IAAI;UACf;UACJ,MAAA;UACA,MAAA,OAAO,IAAI;UACf,IAAA;aAAE;UACF;UACA,EAAA,IAAIX,KAAK,GAAI,YAAA;UACb,IAAA,IAAIA,KAAK,GAAI;UAEbD,MAAAA,GAAG,EAAC,CAAC;UAELR,MAAAA,UAAU,EAAC,SAASA,UAAUA,CAAChxB,GAAG,EAAEib,IAAI,EAAA;UAChC,QAAA,IAAI,IAAI,CAACiU,EAAE,CAACxC,MAAM,EAAE;oBAChB,IAAI,CAACwC,EAAE,CAACxC,MAAM,CAACsE,UAAU,CAAChxB,GAAG,EAAEib,IAAI,CAAC;UACxC,QAAA,CAAC,MAAM;UACH,UAAA,MAAM,IAAIhU,KAAK,CAACjH,GAAG,CAAC;UACxB,QAAA;gBACJ,CAAC;UAEL;UACA2xB,MAAAA,QAAQ,EAAC,UAAU5e,KAAK,EAAEmc,EAAE,EAAA;kBACpB,IAAI,CAACA,EAAE,GAAGA,EAAE,IAAI,IAAI,CAACA,EAAE,IAAI,EAAE;kBAC7B,IAAI,CAAC2D,MAAM,GAAG9f,KAAK;kBACnB,IAAI,CAAC+f,KAAK,GAAG,IAAI,CAACC,UAAU,GAAG,IAAI,CAACC,IAAI,GAAG,KAAK;UAChD,QAAA,IAAI,CAACtD,QAAQ,GAAG,IAAI,CAACD,MAAM,GAAG,CAAC;kBAC/B,IAAI,CAACD,MAAM,GAAG,IAAI,CAACyD,OAAO,GAAG,IAAI,CAACrwB,KAAK,GAAG,EAAE;UAC5C,QAAA,IAAI,CAACswB,cAAc,GAAG,CAAC,SAAS,CAAC;kBACjC,IAAI,CAACtB,MAAM,GAAG;UACVY,UAAAA,UAAU,EAAE,CAAC;UACbE,UAAAA,YAAY,EAAE,CAAC;UACfD,UAAAA,SAAS,EAAE,CAAC;UACZE,UAAAA,WAAW,EAAE;UAChB,SAAA;UACD,QAAA,IAAI,IAAI,CAACjrB,OAAO,CAACoqB,MAAM,EAAE;oBACrB,IAAI,CAACF,MAAM,CAACgB,KAAK,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC;UAC7B,QAAA;kBACA,IAAI,CAACO,MAAM,GAAG,CAAC;UACf,QAAA,OAAO,IAAI;gBACf,CAAC;UAEL;gBACApgB,KAAK,EAAC,YAAA;UACE,QAAA,IAAIqgB,EAAE,GAAG,IAAI,CAACP,MAAM,CAAC,CAAC,CAAC;kBACvB,IAAI,CAACrD,MAAM,IAAI4D,EAAE;kBACjB,IAAI,CAAC3D,MAAM,EAAE;kBACb,IAAI,CAAC0D,MAAM,EAAE;kBACb,IAAI,CAACvwB,KAAK,IAAIwwB,EAAE;kBAChB,IAAI,CAACH,OAAO,IAAIG,EAAE;UAClB,QAAA,IAAIhe,KAAK,GAAGge,EAAE,CAACxwB,KAAK,CAAC,iBAAiB,CAAC;UACvC,QAAA,IAAIwS,KAAK,EAAE;oBACP,IAAI,CAACsa,QAAQ,EAAE;UACf,UAAA,IAAI,CAACkC,MAAM,CAACa,SAAS,EAAE;UAC3B,QAAA,CAAC,MAAM;UACH,UAAA,IAAI,CAACb,MAAM,CAACe,WAAW,EAAE;UAC7B,QAAA;UACA,QAAA,IAAI,IAAI,CAACjrB,OAAO,CAACoqB,MAAM,EAAE;UACrB,UAAA,IAAI,CAACF,MAAM,CAACgB,KAAK,CAAC,CAAC,CAAC,EAAE;UAC1B,QAAA;kBAEA,IAAI,CAACC,MAAM,GAAG,IAAI,CAACA,MAAM,CAACvpB,KAAK,CAAC,CAAC,CAAC;UAClC,QAAA,OAAO8pB,EAAE;gBACb,CAAC;UAEL;gBACAC,KAAK,EAAC,UAAUD,EAAE,EAAA;UACV,QAAA,IAAIrf,GAAG,GAAGqf,EAAE,CAACpwB,MAAM;UACnB,QAAA,IAAIoS,KAAK,GAAGge,EAAE,CAAChqB,KAAK,CAAC,eAAe,CAAC;UAErC,QAAA,IAAI,CAACypB,MAAM,GAAGO,EAAE,GAAG,IAAI,CAACP,MAAM;UAC9B,QAAA,IAAI,CAACrD,MAAM,GAAG,IAAI,CAACA,MAAM,CAAC8D,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC9D,MAAM,CAACxsB,MAAM,GAAG+Q,GAAG,CAAC;UAC7D;kBACA,IAAI,CAACof,MAAM,IAAIpf,GAAG;kBAClB,IAAIwf,QAAQ,GAAG,IAAI,CAAC3wB,KAAK,CAACwG,KAAK,CAAC,eAAe,CAAC;UAChD,QAAA,IAAI,CAACxG,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC0wB,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC1wB,KAAK,CAACI,MAAM,GAAG,CAAC,CAAC;UACxD,QAAA,IAAI,CAACiwB,OAAO,GAAG,IAAI,CAACA,OAAO,CAACK,MAAM,CAAC,CAAC,EAAE,IAAI,CAACL,OAAO,CAACjwB,MAAM,GAAG,CAAC,CAAC;UAE9D,QAAA,IAAIoS,KAAK,CAACpS,MAAM,GAAG,CAAC,EAAE;UAClB,UAAA,IAAI,CAAC0sB,QAAQ,IAAIta,KAAK,CAACpS,MAAM,GAAG,CAAC;UACrC,QAAA;UACA,QAAA,IAAI+C,CAAC,GAAG,IAAI,CAAC6rB,MAAM,CAACgB,KAAK;kBAEzB,IAAI,CAAChB,MAAM,GAAG;UACVY,UAAAA,UAAU,EAAE,IAAI,CAACZ,MAAM,CAACY,UAAU;UAClCC,UAAAA,SAAS,EAAE,IAAI,CAAC/C,QAAQ,GAAG,CAAC;UAC5BgD,UAAAA,YAAY,EAAE,IAAI,CAACd,MAAM,CAACc,YAAY;oBACtCC,WAAW,EAAEvd,KAAK,GACd,CAACA,KAAK,CAACpS,MAAM,KAAKuwB,QAAQ,CAACvwB,MAAM,GAAG,IAAI,CAAC4uB,MAAM,CAACc,YAAY,GAAG,CAAC,IAC7Da,QAAQ,CAACA,QAAQ,CAACvwB,MAAM,GAAGoS,KAAK,CAACpS,MAAM,CAAC,CAACA,MAAM,GAAGoS,KAAK,CAAC,CAAC,CAAC,CAACpS,MAAM,GACtE,IAAI,CAAC4uB,MAAM,CAACc,YAAY,GAAG3e;UAChC,SAAA;UAED,QAAA,IAAI,IAAI,CAACrM,OAAO,CAACoqB,MAAM,EAAE;oBACrB,IAAI,CAACF,MAAM,CAACgB,KAAK,GAAG,CAAC7sB,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC0pB,MAAM,GAAG1b,GAAG,CAAC;UACxD,QAAA;UACA,QAAA,IAAI,CAAC0b,MAAM,GAAG,IAAI,CAACD,MAAM,CAACxsB,MAAM;UAChC,QAAA,OAAO,IAAI;gBACf,CAAC;UAEL;gBACAwwB,IAAI,EAAC,YAAA;kBACG,IAAI,CAACV,KAAK,GAAG,IAAI;UACjB,QAAA,OAAO,IAAI;gBACf,CAAC;UAEL;gBACAW,MAAM,EAAC,YAAA;UACC,QAAA,IAAI,IAAI,CAAC/rB,OAAO,CAACgsB,eAAe,EAAE;oBAC9B,IAAI,CAACX,UAAU,GAAG,IAAI;UAC1B,QAAA,CAAC,MAAM;UACH,UAAA,OAAO,IAAI,CAAC/B,UAAU,CAAC,wBAAwB,IAAI,IAAI,CAACtB,QAAQ,GAAG,CAAC,CAAC,GAAG,kIAAkI,GAAG,IAAI,CAAC6C,YAAY,EAAE,EAAE;UAC9N9P,YAAAA,IAAI,EAAE,EAAE;UACRwP,YAAAA,KAAK,EAAE,IAAI;sBACX1c,IAAI,EAAE,IAAI,CAACma;qBACd,CAAC;UAEN,QAAA;UACA,QAAA,OAAO,IAAI;gBACf,CAAC;UAEL;gBACAiE,IAAI,EAAC,UAAUC,CAAC,EAAA;kBACR,IAAI,CAACP,KAAK,CAAC,IAAI,CAACzwB,KAAK,CAAC0G,KAAK,CAACsqB,CAAC,CAAC,CAAC;gBACnC,CAAC;UAEL;gBACAC,SAAS,EAAC,YAAA;kBACF,IAAIC,IAAI,GAAG,IAAI,CAACb,OAAO,CAACK,MAAM,CAAC,CAAC,EAAE,IAAI,CAACL,OAAO,CAACjwB,MAAM,GAAG,IAAI,CAACJ,KAAK,CAACI,MAAM,CAAC;kBAC1E,OAAO,CAAC8wB,IAAI,CAAC9wB,MAAM,GAAG,EAAE,GAAG,KAAK,GAAC,EAAE,IAAI8wB,IAAI,CAACR,MAAM,CAAC,GAAG,CAAC,CAACzwB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC9E,CAAC;UAEL;gBACAkxB,aAAa,EAAC,YAAA;UACN,QAAA,IAAI9qB,IAAI,GAAG,IAAI,CAACrG,KAAK;UACrB,QAAA,IAAIqG,IAAI,CAACjG,MAAM,GAAG,EAAE,EAAE;UAClBiG,UAAAA,IAAI,IAAI,IAAI,CAAC4pB,MAAM,CAACS,MAAM,CAAC,CAAC,EAAE,EAAE,GAACrqB,IAAI,CAACjG,MAAM,CAAC;UACjD,QAAA;kBACA,OAAO,CAACiG,IAAI,CAACqqB,MAAM,CAAC,CAAC,EAAC,EAAE,CAAC,IAAIrqB,IAAI,CAACjG,MAAM,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC,EAAEH,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBACnF,CAAC;UAEL;gBACA0vB,YAAY,EAAC,YAAA;UACL,QAAA,IAAIyB,GAAG,GAAG,IAAI,CAACH,SAAS,EAAE;UAC1B,QAAA,IAAIjU,CAAC,GAAG,IAAIthB,KAAK,CAAC01B,GAAG,CAAChxB,MAAM,GAAG,CAAC,CAAC,CAACuG,IAAI,CAAC,GAAG,CAAC;kBAC3C,OAAOyqB,GAAG,GAAG,IAAI,CAACD,aAAa,EAAE,GAAG,IAAI,GAAGnU,CAAC,GAAG,GAAG;gBACtD,CAAC;UAEL;UACAqU,MAAAA,UAAU,EAAC,UAASrxB,KAAK,EAAEsxB,YAAY,EAAA;UAC/B,QAAA,IAAIjC,KAAK,EACL7c,KAAK,EACL+e,MAAM;UAEV,QAAA,IAAI,IAAI,CAACzsB,OAAO,CAACgsB,eAAe,EAAE;UAC9B;UACAS,UAAAA,MAAM,GAAG;sBACLzE,QAAQ,EAAE,IAAI,CAACA,QAAQ;UACvBkC,YAAAA,MAAM,EAAE;UACJY,cAAAA,UAAU,EAAE,IAAI,CAACZ,MAAM,CAACY,UAAU;wBAClCC,SAAS,EAAE,IAAI,CAACA,SAAS;UACzBC,cAAAA,YAAY,EAAE,IAAI,CAACd,MAAM,CAACc,YAAY;UACtCC,cAAAA,WAAW,EAAE,IAAI,CAACf,MAAM,CAACe;UAC5B,aAAA;sBACDnD,MAAM,EAAE,IAAI,CAACA,MAAM;sBACnB5sB,KAAK,EAAE,IAAI,CAACA,KAAK;sBACjBwxB,OAAO,EAAE,IAAI,CAACA,OAAO;sBACrBnB,OAAO,EAAE,IAAI,CAACA,OAAO;sBACrBxD,MAAM,EAAE,IAAI,CAACA,MAAM;sBACnB0D,MAAM,EAAE,IAAI,CAACA,MAAM;sBACnBL,KAAK,EAAE,IAAI,CAACA,KAAK;sBACjBD,MAAM,EAAE,IAAI,CAACA,MAAM;sBACnB3D,EAAE,EAAE,IAAI,CAACA,EAAE;sBACXgE,cAAc,EAAE,IAAI,CAACA,cAAc,CAAC5pB,KAAK,CAAC,CAAC,CAAC;sBAC5C0pB,IAAI,EAAE,IAAI,CAACA;UACd,WAAA;UACD,UAAA,IAAI,IAAI,CAACtrB,OAAO,CAACoqB,MAAM,EAAE;UACrBqC,YAAAA,MAAM,CAACvC,MAAM,CAACgB,KAAK,GAAG,IAAI,CAAChB,MAAM,CAACgB,KAAK,CAACtpB,KAAK,CAAC,CAAC,CAAC;UACpD,UAAA;UACJ,QAAA;kBAEA8L,KAAK,GAAGxS,KAAK,CAAC,CAAC,CAAC,CAACA,KAAK,CAAC,iBAAiB,CAAC;UACzC,QAAA,IAAIwS,KAAK,EAAE;UACP,UAAA,IAAI,CAACsa,QAAQ,IAAIta,KAAK,CAACpS,MAAM;UACjC,QAAA;kBACA,IAAI,CAAC4uB,MAAM,GAAG;UACVY,UAAAA,UAAU,EAAE,IAAI,CAACZ,MAAM,CAACa,SAAS;UACjCA,UAAAA,SAAS,EAAE,IAAI,CAAC/C,QAAQ,GAAG,CAAC;UAC5BgD,UAAAA,YAAY,EAAE,IAAI,CAACd,MAAM,CAACe,WAAW;UACrCA,UAAAA,WAAW,EAAEvd,KAAK,GACLA,KAAK,CAACA,KAAK,CAACpS,MAAM,GAAG,CAAC,CAAC,CAACA,MAAM,GAAGoS,KAAK,CAACA,KAAK,CAACpS,MAAM,GAAG,CAAC,CAAC,CAACJ,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAACI,MAAM,GAClF,IAAI,CAAC4uB,MAAM,CAACe,WAAW,GAAG/vB,KAAK,CAAC,CAAC,CAAC,CAACI;UACnD,SAAA;UACD,QAAA,IAAI,CAACwsB,MAAM,IAAI5sB,KAAK,CAAC,CAAC,CAAC;UACvB,QAAA,IAAI,CAACA,KAAK,IAAIA,KAAK,CAAC,CAAC,CAAC;kBACtB,IAAI,CAACwxB,OAAO,GAAGxxB,KAAK;UACpB,QAAA,IAAI,CAAC6sB,MAAM,GAAG,IAAI,CAACD,MAAM,CAACxsB,MAAM;UAChC,QAAA,IAAI,IAAI,CAAC0E,OAAO,CAACoqB,MAAM,EAAE;UACrB,UAAA,IAAI,CAACF,MAAM,CAACgB,KAAK,GAAG,CAAC,IAAI,CAACO,MAAM,EAAE,IAAI,CAACA,MAAM,IAAI,IAAI,CAAC1D,MAAM,CAAC;UACjE,QAAA;kBACA,IAAI,CAACqD,KAAK,GAAG,KAAK;kBAClB,IAAI,CAACC,UAAU,GAAG,KAAK;UACvB,QAAA,IAAI,CAACF,MAAM,GAAG,IAAI,CAACA,MAAM,CAACvpB,KAAK,CAAC1G,KAAK,CAAC,CAAC,CAAC,CAACI,MAAM,CAAC;UAChD,QAAA,IAAI,CAACiwB,OAAO,IAAIrwB,KAAK,CAAC,CAAC,CAAC;UACxBqvB,QAAAA,KAAK,GAAG,IAAI,CAAC3C,aAAa,CAAChwB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC4vB,EAAE,EAAE,IAAI,EAAEgF,YAAY,EAAE,IAAI,CAAChB,cAAc,CAAC,IAAI,CAACA,cAAc,CAAClwB,MAAM,GAAG,CAAC,CAAC,CAAC;UACvH,QAAA,IAAI,IAAI,CAACgwB,IAAI,IAAI,IAAI,CAACH,MAAM,EAAE;oBAC1B,IAAI,CAACG,IAAI,GAAG,KAAK;UACrB,QAAA;UACA,QAAA,IAAIf,KAAK,EAAE;UACP,UAAA,OAAOA,KAAK;UAChB,QAAA,CAAC,MAAM,IAAI,IAAI,CAACc,UAAU,EAAE;UACxB;UACA,UAAA,KAAK,IAAI/sB,CAAC,IAAImuB,MAAM,EAAE;UAClB,YAAA,IAAI,CAACnuB,CAAC,CAAC,GAAGmuB,MAAM,CAACnuB,CAAC,CAAC;UACvB,UAAA;oBACA,OAAO,KAAK,CAAC;UACjB,QAAA;UACA,QAAA,OAAO,KAAK;gBAChB,CAAC;UAEL;gBACAiD,IAAI,EAAC,YAAA;kBACG,IAAI,IAAI,CAAC+pB,IAAI,EAAE;oBACX,OAAO,IAAI,CAACxB,GAAG;UACnB,QAAA;UACA,QAAA,IAAI,CAAC,IAAI,CAACqB,MAAM,EAAE;oBACd,IAAI,CAACG,IAAI,GAAG,IAAI;UACpB,QAAA;UAEA,QAAA,IAAIf,KAAK,EACLrvB,KAAK,EACLyxB,SAAS,EACThW,KAAK;UACT,QAAA,IAAI,CAAC,IAAI,CAACyU,KAAK,EAAE;oBACb,IAAI,CAACtD,MAAM,GAAG,EAAE;oBAChB,IAAI,CAAC5sB,KAAK,GAAG,EAAE;UACnB,QAAA;UACA,QAAA,IAAI0xB,KAAK,GAAG,IAAI,CAACC,aAAa,EAAE;UAChC,QAAA,KAAK,IAAItpB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqpB,KAAK,CAACtxB,MAAM,EAAEiI,CAAC,EAAE,EAAE;UACnCopB,UAAAA,SAAS,GAAG,IAAI,CAACxB,MAAM,CAACjwB,KAAK,CAAC,IAAI,CAAC0xB,KAAK,CAACA,KAAK,CAACrpB,CAAC,CAAC,CAAC,CAAC;UACnD,UAAA,IAAIopB,SAAS,KAAK,CAACzxB,KAAK,IAAIyxB,SAAS,CAAC,CAAC,CAAC,CAACrxB,MAAM,GAAGJ,KAAK,CAAC,CAAC,CAAC,CAACI,MAAM,CAAC,EAAE;UAChEJ,YAAAA,KAAK,GAAGyxB,SAAS;UACjBhW,YAAAA,KAAK,GAAGpT,CAAC;UACT,YAAA,IAAI,IAAI,CAACvD,OAAO,CAACgsB,eAAe,EAAE;wBAC9BzB,KAAK,GAAG,IAAI,CAACgC,UAAU,CAACI,SAAS,EAAEC,KAAK,CAACrpB,CAAC,CAAC,CAAC;wBAC5C,IAAIgnB,KAAK,KAAK,KAAK,EAAE;UACjB,gBAAA,OAAOA,KAAK;UAChB,cAAA,CAAC,MAAM,IAAI,IAAI,CAACc,UAAU,EAAE;UACxBnwB,gBAAAA,KAAK,GAAG,KAAK;UACb,gBAAA,SAAS;UACb,cAAA,CAAC,MAAM;UACH;UACA,gBAAA,OAAO,KAAK;UAChB,cAAA;sBACJ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC8E,OAAO,CAAC8sB,IAAI,EAAE;UAC3B,cAAA;UACJ,YAAA;UACJ,UAAA;UACJ,QAAA;UACA,QAAA,IAAI5xB,KAAK,EAAE;oBACPqvB,KAAK,GAAG,IAAI,CAACgC,UAAU,CAACrxB,KAAK,EAAE0xB,KAAK,CAACjW,KAAK,CAAC,CAAC;oBAC5C,IAAI4T,KAAK,KAAK,KAAK,EAAE;UACjB,YAAA,OAAOA,KAAK;UAChB,UAAA;UACA;UACA,UAAA,OAAO,KAAK;UAChB,QAAA;UACA,QAAA,IAAI,IAAI,CAACY,MAAM,KAAK,EAAE,EAAE;oBACpB,OAAO,IAAI,CAACrB,GAAG;UACnB,QAAA,CAAC,MAAM;UACH,UAAA,OAAO,IAAI,CAACR,UAAU,CAAC,wBAAwB,IAAI,IAAI,CAACtB,QAAQ,GAAG,CAAC,CAAC,GAAG,wBAAwB,GAAG,IAAI,CAAC6C,YAAY,EAAE,EAAE;UACpH9P,YAAAA,IAAI,EAAE,EAAE;UACRwP,YAAAA,KAAK,EAAE,IAAI;sBACX1c,IAAI,EAAE,IAAI,CAACma;qBACd,CAAC;UACN,QAAA;gBACJ,CAAC;UAEL;gBACAsC,GAAG,EAAC,SAASA,GAAGA,GAAA;UACR,QAAA,IAAIjsB,CAAC,GAAG,IAAI,CAACkD,IAAI,EAAE;UACnB,QAAA,IAAIlD,CAAC,EAAE;UACH,UAAA,OAAOA,CAAC;UACZ,QAAA,CAAC,MAAM;oBACH,OAAO,IAAI,CAACisB,GAAG,EAAE;UACrB,QAAA;gBACJ,CAAC;UAEL;UACAyC,MAAAA,KAAK,EAAC,SAASA,KAAKA,CAAEC,SAAS,EAAA;UACvB,QAAA,IAAI,CAACxB,cAAc,CAAChxB,IAAI,CAACwyB,SAAS,CAAC;gBACvC,CAAC;UAEL;gBACAC,QAAQ,EAAC,SAASA,QAAQA,GAAA;kBAClB,IAAIf,CAAC,GAAG,IAAI,CAACV,cAAc,CAAClwB,MAAM,GAAG,CAAC;kBACtC,IAAI4wB,CAAC,GAAG,CAAC,EAAE;UACP,UAAA,OAAO,IAAI,CAACV,cAAc,CAACtf,GAAG,EAAE;UACpC,QAAA,CAAC,MAAM;UACH,UAAA,OAAO,IAAI,CAACsf,cAAc,CAAC,CAAC,CAAC;UACjC,QAAA;gBACJ,CAAC;UAEL;gBACAqB,aAAa,EAAC,SAASA,aAAaA,GAAA;UAC5B,QAAA,IAAI,IAAI,CAACrB,cAAc,CAAClwB,MAAM,IAAI,IAAI,CAACkwB,cAAc,CAAC,IAAI,CAACA,cAAc,CAAClwB,MAAM,GAAG,CAAC,CAAC,EAAE;UACnF,UAAA,OAAO,IAAI,CAAC4xB,UAAU,CAAC,IAAI,CAAC1B,cAAc,CAAC,IAAI,CAACA,cAAc,CAAClwB,MAAM,GAAG,CAAC,CAAC,CAAC,CAACsxB,KAAK;UACrF,QAAA,CAAC,MAAM;UACH,UAAA,OAAO,IAAI,CAACM,UAAU,CAAC,SAAS,CAAC,CAACN,KAAK;UAC3C,QAAA;gBACJ,CAAC;UAEL;UACAO,MAAAA,QAAQ,EAAC,SAASA,QAAQA,CAAEjB,CAAC,EAAA;UACrBA,QAAAA,CAAC,GAAG,IAAI,CAACV,cAAc,CAAClwB,MAAM,GAAG,CAAC,GAAGlB,IAAI,CAACgzB,GAAG,CAAClB,CAAC,IAAI,CAAC,CAAC;kBACrD,IAAIA,CAAC,IAAI,CAAC,EAAE;UACR,UAAA,OAAO,IAAI,CAACV,cAAc,CAACU,CAAC,CAAC;UACjC,QAAA,CAAC,MAAM;UACH,UAAA,OAAO,SAAS;UACpB,QAAA;gBACJ,CAAC;UAEL;UACAmB,MAAAA,SAAS,EAAC,SAASA,SAASA,CAAEL,SAAS,EAAA;UAC/B,QAAA,IAAI,CAACD,KAAK,CAACC,SAAS,CAAC;gBACzB,CAAC;UAEL;gBACAM,cAAc,EAAC,SAASA,cAAcA,GAAA;UAC9B,QAAA,OAAO,IAAI,CAAC9B,cAAc,CAAClwB,MAAM;gBACrC,CAAC;UACL0E,MAAAA,OAAO,EAAE,EAAE;gBACX4nB,aAAa,EAAE,SAASC,SAASA,CAACL,EAAE,EAAC+F,GAAG,EAACC,yBAAyB,EAACC,QAAQ,EAAA;UAE3E,QAAA,SAASngB,KAAKA,CAACyU,KAAK,EAAEC,GAAG,EAAA;UACvB,UAAA,OAAOuL,GAAG,CAACzF,MAAM,GAAGyF,GAAG,CAACzF,MAAM,CAAC4F,SAAS,CAAC3L,KAAK,EAAEwL,GAAG,CAACxF,MAAM,GAAG/F,GAAG,GAAGD,KAAK,CAAC;UAC3E,QAAA;UAIA,QAAA,QAAOyL,yBAAyB;UAChC,UAAA,KAAK,CAAC;sBAC6B,IAAGD,GAAG,CAACzF,MAAM,CAAClmB,KAAK,CAAC,EAAE,CAAC,KAAK,MAAM,EAAE;UAClC0L,cAAAA,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC;UACV,cAAA,IAAI,CAACyf,KAAK,CAAC,IAAI,CAAC;UAClB,YAAA,CAAC,MAAM,IAAGQ,GAAG,CAACzF,MAAM,CAAClmB,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE;UACvC0L,cAAAA,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC;UACV,cAAA,IAAI,CAACyf,KAAK,CAAC,KAAK,CAAC;UACnB,YAAA,CAAC,MAAM;UACL,cAAA,IAAI,CAACA,KAAK,CAAC,IAAI,CAAC;UAClB,YAAA;UACA,YAAA,IAAGQ,GAAG,CAACzF,MAAM,EAAE,OAAO,EAAE;UAE3D,YAAA;UACA,UAAA,KAAK,CAAC;UAAC,YAAA,OAAO,EAAE;UAEhB,UAAA,KAAK,CAAC;sBAC6B,IAAI,CAACmF,QAAQ,EAAE;UACf,YAAA,OAAO,EAAE;UAG5C,UAAA,KAAK,CAAC;UAAC,YAAA,IAAI,CAACF,KAAK,CAAC,KAAK,CAAC;UAAE,YAAA,OAAO,EAAE;UAEnC,UAAA,KAAK,CAAC;sBAC4B,IAAI,CAACE,QAAQ,EAAE;UACf;UACA;UACA;UACA,YAAA,IAAI,IAAI,CAACzB,cAAc,CAAC,IAAI,CAACA,cAAc,CAAClwB,MAAM,GAAC,CAAC,CAAC,KAAK,KAAK,EAAE;UAC/D,cAAA,OAAO,EAAE;UACX,YAAA,CAAC,MAAM;UACLgS,cAAAA,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;UACX,cAAA,OAAO,EAAE;UACX,YAAA;UAGlC,UAAA,KAAK,CAAC;UAAE,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,CAAC;sBACJ,IAAI,CAAC2f,QAAQ,EAAE;UACf,YAAA,OAAO,EAAE;UAGX,UAAA,KAAK,CAAC;UAAC,YAAA,OAAO,EAAE;UAEhB,UAAA,KAAK,CAAC;UAAC,YAAA,OAAO,EAAE;UAEhB,UAAA,KAAK,CAAC;UACJ,YAAA,IAAIzF,EAAE,CAACsB,MAAM,CAACE,MAAM,KAAK,QAAQ,EAAE;UACjC,cAAA,IAAI,CAAC2C,KAAK,CAAC4B,GAAG,CAACzF,MAAM,CAAC;UACtB;UACA,cAAA,IAAI,CAACiF,KAAK,CAAC,MAAM,CAAC;UACpB,YAAA,CAAC,MAAM;UACL,cAAA,OAAO,EAAE;UACX,YAAA;UAEF,YAAA;UACA,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAE,YAAA,OAAO,EAAE;UAElB,UAAA,KAAK,EAAE;sBAC2B,IAAI,CAACE,QAAQ,EAAE;UACf,YAAA,IAAI,CAACF,KAAK,CAAC,KAAK,CAAC;UACjB,YAAA,OAAO,EAAE;UAG3C,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;sBAAC,IAAI,CAACE,QAAQ,EAAE;UAAE,YAAA,OAAO,EAAE;UAElC,UAAA,KAAK,EAAE;sBAAC,IAAI,CAACA,QAAQ,EAAE;UAAE,YAAA,OAAO,EAAE;UAElC,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UACL,YAAA,IAAI,CAACtB,KAAK,CAAC4B,GAAG,CAACzF,MAAM,CAAC;sBACtB,IAAI,CAACmF,QAAQ,EAAE;UACf,YAAA,IAAI,CAACF,KAAK,CAAC,KAAK,CAAC;UAEnB,YAAA;UACA,UAAA,KAAK,EAAE;sBACL,IAAI,CAACE,QAAQ,EAAE;UACf,YAAA,OAAO,EAAE;UAGX,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC;UACR,YAAA;UACA,UAAA,KAAK,EAAE;sBAAC,IAAI,CAACA,QAAQ,EAAE;UAAE,YAAA,OAAO,EAAE;UAElC,UAAA,KAAK,EAAE;sBAAC,IAAI,CAACA,QAAQ,EAAE;UAAE,YAAA,OAAO,EAAE;UAElC,UAAA,KAAK,EAAE;UAACM,YAAAA,GAAG,CAACzF,MAAM,GAAGxa,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,CAACnS,OAAO,CAAC,MAAM,EAAC,GAAG,CAAC;UAAE,YAAA,OAAO,EAAE;UAE9D,UAAA,KAAK,EAAE;UAACoyB,YAAAA,GAAG,CAACzF,MAAM,GAAGxa,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,CAACnS,OAAO,CAAC,MAAM,EAAC,GAAG,CAAC;UAAE,YAAA,OAAO,EAAE;UAE9D,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,EAAE;UAEjB,UAAA,KAAK,EAAE;UACLoyB,YAAAA,GAAG,CAACzF,MAAM,GAAGyF,GAAG,CAACzF,MAAM,CAAC3sB,OAAO,CAAC,aAAa,EAAC,IAAI,CAAC;sBACnD,IAAI,CAAC8xB,QAAQ,EAAE;UACf,YAAA,OAAO,EAAE;UAGX,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,SAAS;UAExB,UAAA,KAAK,EAAE;UAAC,YAAA,OAAO,CAAC;UAEhB;gBACA,CAAC;gBACDL,KAAK,EAAE,CAAC,0BAA0B,EAAC,eAAe,EAAC,+CAA+C,EAAC,uBAAuB,EAAC,oEAAoE,EAAC,8BAA8B,EAAC,yBAAyB,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,SAAS,EAAC,eAAe,EAAC,eAAe,EAAC,gBAAgB,EAAC,iBAAiB,EAAC,mBAAmB,EAAC,iBAAiB,EAAC,4BAA4B,EAAC,iCAAiC,EAAC,iBAAiB,EAAC,wBAAwB,EAAC,iBAAiB,EAAC,gBAAgB,EAAC,kBAAkB,EAAC,4BAA4B,EAAC,kBAAkB,EAAC,QAAQ,EAAC,WAAW,EAAC,6BAA6B,EAAC,UAAU,EAAC,YAAY,EAAC,UAAU,EAAC,iBAAiB,EAAC,eAAe,EAAC,sBAAsB,EAAC,sBAAsB,EAAC,QAAQ,EAAC,0BAA0B,EAAC,2BAA2B,EAAC,+BAA+B,EAAC,0BAA0B,EAAC,2CAA2C,EAAC,cAAc,EAAC,SAAS,EAAC,2DAA2D,EAAC,wBAAwB,EAAC,QAAQ,EAAC,QAAQ,CAAC;UACviCM,MAAAA,UAAU,EAAE;UAAC,QAAA,IAAI,EAAC;UAAC,UAAA,OAAO,EAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,CAAC;UAAC,UAAA,WAAW,EAAC;mBAAM;UAAC,QAAA,KAAK,EAAC;oBAAC,OAAO,EAAC,CAAC,CAAC,CAAC;UAAC,UAAA,WAAW,EAAC;mBAAM;UAAC,QAAA,KAAK,EAAC;oBAAC,OAAO,EAAC,CAAC,CAAC,CAAC;UAAC,UAAA,WAAW,EAAC;mBAAM;UAAC,QAAA,KAAK,EAAC;UAAC,UAAA,OAAO,EAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;UAAC,UAAA,WAAW,EAAC;mBAAM;UAAC,QAAA,MAAM,EAAC;oBAAC,OAAO,EAAC,CAAC,EAAE,CAAC;UAAC,UAAA,WAAW,EAAC;mBAAM;UAAC,QAAA,SAAS,EAAC;UAAC,UAAA,OAAO,EAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAC;UAAC,UAAA,WAAW,EAAC;UAAI;UAAC;UAC9W,KAAA;UACF,IAAA,OAAOnD,KAAK;UACZ,EAAA,CAAC,EAAG;YACJ/E,MAAM,CAAC+E,KAAK,GAAGA,KAAK;UACpB,EAAA,SAAS4D,MAAMA,GAAA;cACb,IAAI,CAACnG,EAAE,GAAG,EAAE;UACd,EAAA;YACAmG,MAAM,CAACj2B,SAAS,GAAGstB,MAAM;YAACA,MAAM,CAAC2I,MAAM,GAAGA,MAAM;YAChD,OAAO,IAAIA,MAAM,EAAA;UACjB,CAAC,EAAG;;;;;;;;;;;UC92BE,SAAUvN,KAAKA,CAACE,GAAG,EAAA;UACvB,EAAA,OAAO,IAAIsN,YAAY,EAAE,CAAClL,MAAM,CAACpC,GAAG,CAAC;UACvC;UAEM,SAAUsN,YAAYA,GAAA;YAC1B,IAAI,CAACC,OAAO,GAAG,CAAC;UAClB;UAEAD,YAAY,CAACl2B,SAAS,GAAG,IAAI4qB,OAAO,EAAE;UAEtCsL,YAAY,CAACl2B,SAAS,CAACo2B,GAAG,GAAG,UAAUtgB,MAAM,EAAA;YAC3C,IAAIvD,GAAG,GAAG,EAAE;UAEZ,EAAA,KAAK,IAAI1G,CAAC,GAAG,CAAC,EAAEsf,CAAC,GAAG,IAAI,CAACgL,OAAO,EAAEtqB,CAAC,GAAGsf,CAAC,EAAEtf,CAAC,EAAE,EAAE;UAC5C0G,IAAAA,GAAG,IAAI,IAAI;UACb,EAAA;YAEAA,GAAG,IAAIuD,MAAM,GAAG,IAAI;UACpB,EAAA,OAAOvD,GAAG;UACZ,CAAC;UAED2jB,YAAY,CAACl2B,SAAS,CAACsrB,OAAO,GAAG,UAAUxD,OAAO,EAAA;YAChD,IAAIvV,GAAG,GAAG,EAAE;cACV0T,IAAI,GAAG6B,OAAO,CAAC7B,IAAI;cACnBpa,CAAC;cACDsf,CAAC;YAEH,IAAIrD,OAAO,CAAC5L,WAAW,EAAE;cACvB,IAAIA,WAAW,GAAG,iBAAiB;UACnC,IAAA,KAAKrQ,CAAC,GAAG,CAAC,EAAEsf,CAAC,GAAGrD,OAAO,CAAC5L,WAAW,CAACtY,MAAM,EAAEiI,CAAC,GAAGsf,CAAC,EAAEtf,CAAC,EAAE,EAAE;gBACtDqQ,WAAW,IAAI,GAAG,GAAG4L,OAAO,CAAC5L,WAAW,CAACrQ,CAAC,CAAC;UAC7C,IAAA;UACAqQ,IAAAA,WAAW,IAAI,IAAI;UACnB3J,IAAAA,GAAG,IAAI,IAAI,CAAC6jB,GAAG,CAACla,WAAW,CAAC;UAC9B,EAAA;UAEA,EAAA,KAAKrQ,CAAC,GAAG,CAAC,EAAEsf,CAAC,GAAGlF,IAAI,CAACriB,MAAM,EAAEiI,CAAC,GAAGsf,CAAC,EAAEtf,CAAC,EAAE,EAAE;cACvC0G,GAAG,IAAI,IAAI,CAACyY,MAAM,CAAC/E,IAAI,CAACpa,CAAC,CAAC,CAAC;UAC7B,EAAA;YAEA,IAAI,CAACsqB,OAAO,EAAE;UAEd,EAAA,OAAO5jB,GAAG;UACZ,CAAC;UAED2jB,YAAY,CAACl2B,SAAS,CAACulB,iBAAiB,GAAG,UAAUgC,QAAQ,EAAA;YAC3D,IAAIA,QAAQ,CAAC3L,MAAM,CAAChY,MAAM,GAAG,CAAC,IAAI2jB,QAAQ,CAAC1L,IAAI,EAAE;UAC/C,IAAA,OAAO,IAAI,CAACua,GAAG,CAAC,KAAK,GAAG,IAAI,CAACC,QAAQ,CAAC9O,QAAQ,CAAC,GAAG,KAAK,CAAC;UAC1D,EAAA,CAAC,MAAM;UACL,IAAA,OAAO,IAAI,CAAC6O,GAAG,CAAC,KAAK,GAAG,IAAI,CAACpL,MAAM,CAACzD,QAAQ,CAAC5L,IAAI,CAAC,GAAG,KAAK,CAAC;UAC7D,EAAA;UACF,CAAC;UACDua,YAAY,CAACl2B,SAAS,CAACwrB,SAAS,GAAG,UAAUjE,QAAQ,EAAA;UACnD,EAAA,OAAO,IAAI,CAAC6O,GAAG,CAAC,eAAe,GAAG,IAAI,CAACC,QAAQ,CAAC9O,QAAQ,CAAC,GAAG,KAAK,CAAC;UACpE,CAAC;UAED2O,YAAY,CAACl2B,SAAS,CAACwlB,cAAc,GAAG0Q,YAAY,CAACl2B,SAAS,CAAC0rB,cAAc,GAC3E,UAAUrP,KAAK,EAAA;YACb,IAAI9J,GAAG,GAAG,EAAE;UAEZA,EAAAA,GAAG,IAAI,IAAI,CAAC6jB,GAAG,CACb,CAAC/Z,KAAK,CAACna,IAAI,KAAK,gBAAgB,GAAG,YAAY,GAAG,EAAE,IAAI,QAAQ,CACjE;YACD,IAAI,CAACi0B,OAAO,EAAE;YACd5jB,GAAG,IAAI,IAAI,CAAC6jB,GAAG,CAAC,IAAI,CAACC,QAAQ,CAACha,KAAK,CAAC,CAAC;YACrC,IAAIA,KAAK,CAACyL,OAAO,EAAE;UACjBvV,IAAAA,GAAG,IAAI,IAAI,CAAC6jB,GAAG,CAAC,UAAU,CAAC;cAC3B,IAAI,CAACD,OAAO,EAAE;cACd5jB,GAAG,IAAI,IAAI,CAACyY,MAAM,CAAC3O,KAAK,CAACyL,OAAO,CAAC;cACjC,IAAI,CAACqO,OAAO,EAAE;UAChB,EAAA;YACA,IAAI9Z,KAAK,CAAC0E,OAAO,EAAE;cACjB,IAAI1E,KAAK,CAACyL,OAAO,EAAE;gBACjB,IAAI,CAACqO,OAAO,EAAE;UAChB,IAAA;UACA5jB,IAAAA,GAAG,IAAI,IAAI,CAAC6jB,GAAG,CAAC,OAAO,CAAC;cACxB,IAAI,CAACD,OAAO,EAAE;cACd5jB,GAAG,IAAI,IAAI,CAACyY,MAAM,CAAC3O,KAAK,CAAC0E,OAAO,CAAC;cACjC,IAAI,CAACoV,OAAO,EAAE;cACd,IAAI9Z,KAAK,CAACyL,OAAO,EAAE;gBACjB,IAAI,CAACqO,OAAO,EAAE;UAChB,IAAA;UACF,EAAA;YACA,IAAI,CAACA,OAAO,EAAE;UAEd,EAAA,OAAO5jB,GAAG;UACZ,CAAC;UAEH2jB,YAAY,CAACl2B,SAAS,CAAC2rB,gBAAgB,GAAG,UAAUG,OAAO,EAAA;YACzD,IAAIwK,OAAO,GAAG,UAAU,GAAGxK,OAAO,CAACvoB,IAAI,CAAC4kB,QAAQ;UAChD,EAAA,IAAI2D,OAAO,CAAClQ,MAAM,CAAC,CAAC,CAAC,EAAE;UACrB0a,IAAAA,OAAO,IAAI,GAAG,GAAG,IAAI,CAACtL,MAAM,CAACc,OAAO,CAAClQ,MAAM,CAAC,CAAC,CAAC,CAAC;UACjD,EAAA;YACA,IAAIkQ,OAAO,CAACjQ,IAAI,EAAE;cAChBya,OAAO,IAAI,GAAG,GAAG,IAAI,CAACtL,MAAM,CAACc,OAAO,CAACjQ,IAAI,CAAC;UAC5C,EAAA;YACA,OAAO,IAAI,CAACua,GAAG,CAAC,MAAM,GAAGE,OAAO,GAAG,KAAK,CAAC;UAC3C,CAAC;UACDJ,YAAY,CAACl2B,SAAS,CAAC6rB,qBAAqB,GAAG,UAAUC,OAAO,EAAA;YAC9D,IAAIwK,OAAO,GAAG,gBAAgB,GAAGxK,OAAO,CAACvoB,IAAI,CAAC4kB,QAAQ;UACtD,EAAA,IAAI2D,OAAO,CAAClQ,MAAM,CAAC,CAAC,CAAC,EAAE;UACrB0a,IAAAA,OAAO,IAAI,GAAG,GAAG,IAAI,CAACtL,MAAM,CAACc,OAAO,CAAClQ,MAAM,CAAC,CAAC,CAAC,CAAC;UACjD,EAAA;YACA,IAAIkQ,OAAO,CAACjQ,IAAI,EAAE;cAChBya,OAAO,IAAI,GAAG,GAAG,IAAI,CAACtL,MAAM,CAACc,OAAO,CAACjQ,IAAI,CAAC;UAC5C,EAAA;YAEAya,OAAO,IAAI,GAAG,GAAG,IAAI,CAACF,GAAG,CAAC,UAAU,CAAC;YACrC,IAAI,CAACD,OAAO,EAAE;YACdG,OAAO,IAAI,IAAI,CAACtL,MAAM,CAACc,OAAO,CAAChE,OAAO,CAAC;YACvC,IAAI,CAACqO,OAAO,EAAE;YAEd,OAAO,IAAI,CAACC,GAAG,CAAC,MAAM,GAAGE,OAAO,GAAG,KAAK,CAAC;UAC3C,CAAC;UAEDJ,YAAY,CAACl2B,SAAS,CAAC+rB,gBAAgB,GAAG,UAAUuK,OAAO,EAAA;YACzD,OAAO,IAAI,CAACF,GAAG,CAAC,YAAY,GAAGE,OAAO,CAACr4B,KAAK,GAAG,KAAK,CAAC;UACvD,CAAC;UAEDi4B,YAAY,CAACl2B,SAAS,CAAC0lB,gBAAgB,GAAG,UAAUuC,OAAO,EAAA;YACzD,OAAO,IAAI,CAACmO,GAAG,CAAC,OAAO,GAAGnO,OAAO,CAAChqB,KAAK,GAAG,MAAM,CAAC;UACnD,CAAC;UAEDi4B,YAAY,CAACl2B,SAAS,CAACglB,aAAa,GAAG,UAAUuR,KAAK,EAAA;YACpD,OAAO,GAAA,CAAAvO,MAAA,CAAI,IAAI,CAACqO,QAAQ,CAACE,KAAK,CAAC,EAAA,GAAA,CAAG;UACpC,CAAC;UAEDL,YAAY,CAACl2B,SAAS,CAACq2B,QAAQ,GAAG,UAAUG,QAAQ,EAAA;UAClD,EAAA,IAAI5a,MAAM,GAAG4a,QAAQ,CAAC5a,MAAM;UAC1B6a,IAAAA,YAAY,GAAG,EAAE;cACjB5a,IAAI;UAEN,EAAA,KAAK,IAAIhQ,CAAC,GAAG,CAAC,EAAEsf,CAAC,GAAGvP,MAAM,CAAChY,MAAM,EAAEiI,CAAC,GAAGsf,CAAC,EAAEtf,CAAC,EAAE,EAAE;UAC7C4qB,IAAAA,YAAY,CAAC3zB,IAAI,CAAC,IAAI,CAACkoB,MAAM,CAACpP,MAAM,CAAC/P,CAAC,CAAC,CAAC,CAAC;UAC3C,EAAA;UAEA+P,EAAAA,MAAM,GACJ6a,YAAY,CAAC7yB,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG6yB,YAAY,CAACtsB,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG;UAEvE0R,EAAAA,IAAI,GAAG2a,QAAQ,CAAC3a,IAAI,GAAG,GAAG,GAAG,IAAI,CAACmP,MAAM,CAACwL,QAAQ,CAAC3a,IAAI,CAAC,GAAG,EAAE;YAE5D,OAAO,IAAI,CAACmP,MAAM,CAACwL,QAAQ,CAAC7a,IAAI,CAAC,GAAGC,MAAM,GAAGC,IAAI;UACnD,CAAC;UAEDqa,YAAY,CAACl2B,SAAS,CAAC+kB,cAAc,GAAG,UAAUtiB,EAAE,EAAA;YAClD,IAAI+Y,IAAI,GACN,OAAO/Y,EAAE,CAAC+Y,IAAI,KAAK,QAAQ,GAAG/Y,EAAE,CAAC+Y,IAAI,GAAG,GAAA,CAAAwM,MAAA,CAAI,IAAI,CAACgD,MAAM,CAACvoB,EAAE,CAAC+Y,IAAI,CAAC,EAAA,GAAA,CAAG;UACrE,EAAA,IAAIG,IAAI,GAAG+a,eAAA,CAAA,CAAClb,IAAI,CAAA,EAAK/Y,EAAE,CAACoa,IAAI,EAAA,IAAA,CAAA,CAAE1S,IAAI,CAAC,GAAG,CAAC;UACvC,EAAA,OAAO,IAAI,GAAGvI,MAAM,CAACa,EAAE,CAAC,GAAGkZ,IAAI;UACjC,CAAC;UAED,SAAS/Z,MAAMA,CAAC+Z,IAAI,EAAA;YAClB,IAAIA,IAAI,CAACgb,IAAI,EAAE;UACb,IAAA,OAAO,GAAG;UACZ,EAAA,CAAC,MAAM,IAAIhb,IAAI,CAAC8C,IAAI,EAAE;UACpB,IAAA,OAAO,OAAO;UAChB,EAAA,CAAC,MAAM;UACL,IAAA,OAAO,EAAE;UACX,EAAA;UACF;UAEAyX,YAAY,CAACl2B,SAAS,CAACklB,aAAa,GAAG,UAAUpP,MAAM,EAAA;UACrD,EAAA,OAAO,GAAG,GAAGA,MAAM,CAAC7X,KAAK,GAAG,GAAG;UACjC,CAAC;UAEDi4B,YAAY,CAACl2B,SAAS,CAAColB,aAAa,GAAG,UAAUqD,MAAM,EAAA;UACrD,EAAA,OAAO,IAAI,GAAGA,MAAM,CAACxqB,KAAK;UAC5B,CAAC;UAEDi4B,YAAY,CAACl2B,SAAS,CAACmlB,cAAc,GAAG,UAAUqD,IAAI,EAAA;UACpD,EAAA,OAAO,IAAI,GAAGA,IAAI,CAACvqB,KAAK;UAC1B,CAAC;UAEDi4B,YAAY,CAACl2B,SAAS,CAACqlB,gBAAgB,GAAG,YAAA;UACxC,EAAA,OAAO,WAAW;UACpB,CAAC;UAED6Q,YAAY,CAACl2B,SAAS,CAACslB,WAAW,GAAG,YAAA;UACnC,EAAA,OAAO,MAAM;UACf,CAAC;UAED4Q,YAAY,CAACl2B,SAAS,CAAC42B,YAAY,GAAG,UAAU5X,KAAK,EAAA;UAAf,EAAA,IAAA6X,KAAA,GAAA,IAAA;YACpC,OAAO,QAAA,CAAA7O,MAAA,CAAShJ,KAAK,CAAC8X,KAAK,CAACtZ,GAAG,CAAC,UAAChL,IAAI,EAAA;UAAK,IAAA,OAAAqkB,KAAI,CAAC7L,MAAM,CAACxY,IAAI,CAAC;UAAjB,EAAA,CAAiB,CAAC,CAACrI,IAAI,CAAC,IAAI,CAAC,EAAA,GAAA,CAAG;UAC5E,CAAC;UAED+rB,YAAY,CAACl2B,SAAS,CAAC+2B,WAAW,GAAG,UAAUlb,IAAI,EAAA;YACjD,OAAO,OAAA,CAAAmM,MAAA,CAAQ,IAAI,CAACgP,SAAS,CAACnb,IAAI,CAAC,EAAA,GAAA,CAAG;UACxC,CAAC;UAEDqa,YAAY,CAACl2B,SAAS,CAAC2kB,IAAI,GAAG,UAAU9I,IAAI,EAAA;YAC1C,OAAO,OAAA,CAAAmM,MAAA,CAAQ,IAAI,CAACgP,SAAS,CAACnb,IAAI,CAAC,EAAA,GAAA,CAAG;UACxC,CAAC;UAEDqa,YAAY,CAACl2B,SAAS,CAACg3B,SAAS,GAAG,UAAUnb,IAAI,EAAA;UAC/C,EAAA,IAAIyM,KAAK,GAAGzM,IAAI,CAACyM,KAAK;UACpB2O,IAAAA,WAAW,GAAG,EAAE;UAElB,EAAA,KAAK,IAAIprB,CAAC,GAAG,CAAC,EAAEsf,CAAC,GAAG7C,KAAK,CAAC1kB,MAAM,EAAEiI,CAAC,GAAGsf,CAAC,EAAEtf,CAAC,EAAE,EAAE;UAC5CorB,IAAAA,WAAW,CAACn0B,IAAI,CAAC,IAAI,CAAC8hB,QAAQ,CAAC0D,KAAK,CAACzc,CAAC,CAAC,CAAC,CAAC;UAC3C,EAAA;UAEA,EAAA,OAAOorB,WAAW,CAAC9sB,IAAI,CAAC,GAAG,CAAC;UAC9B,CAAC;UAED+rB,YAAY,CAACl2B,SAAS,CAAC4kB,QAAQ,GAAG,UAAU2D,IAAI,EAAA;UAC9C,EAAA,OAAOA,IAAI,CAACxnB,GAAG,GAAG,GAAG,GAAG,IAAI,CAACiqB,MAAM,CAACzC,IAAI,CAACtqB,KAAK,CAAC;UACjD,CAAC;UACD;;;;;;;;;;;UChNA,SAASi5B,aAAaA,CAACzP,IAAI,EAAEE,KAAK,EAAA;YAChCA,KAAK,GAAGA,KAAK,CAAChM,IAAI,GAAGgM,KAAK,CAAChM,IAAI,CAACwM,QAAQ,GAAGR,KAAK;UAEhD,EAAA,IAAIF,IAAI,CAAC9L,IAAI,CAACwM,QAAQ,KAAKR,KAAK,EAAE;UAChC,IAAA,IAAIwP,SAAS,GAAG;UAAE3T,MAAAA,GAAG,EAAEiE,IAAI,CAAC9L,IAAI,CAAC6H;eAAK;UAEtC,IAAA,MAAM,IAAI0G,SAAS,CACjBzC,IAAI,CAAC9L,IAAI,CAACwM,QAAQ,GAAG,iBAAiB,GAAGR,KAAK,EAC9CwP,SAAS,CACV;UACH,EAAA;UACF;UAEM,SAAUC,cAAcA,CAACzU,MAAM,EAAEoO,OAAO,EAAA;YAC5C,IAAI,CAACpO,MAAM,GAAGA,MAAM;YACpB,IAAI,CAAC0H,KAAK,GAAG;cACXlU,IAAI,EAAE4a,OAAO,CAACqC,UAAU;cACxBzP,MAAM,EAAEoN,OAAO,CAACuC;UACjB,GAAA;YACD,IAAI,CAAChJ,GAAG,GAAG;cACTnU,IAAI,EAAE4a,OAAO,CAACsC,SAAS;cACvB1P,MAAM,EAAEoN,OAAO,CAACwC;UACjB,GAAA;UACH;UAEM,SAAU9wB,EAAEA,CAACowB,KAAK,EAAA;UACtB,EAAA,IAAI,UAAU,CAAC90B,IAAI,CAAC80B,KAAK,CAAC,EAAE;cAC1B,OAAOA,KAAK,CAACmD,SAAS,CAAC,CAAC,EAAEnD,KAAK,CAACjvB,MAAM,GAAG,CAAC,CAAC;UAC7C,EAAA,CAAC,MAAM;UACL,IAAA,OAAOivB,KAAK;UACd,EAAA;UACF;UAEM,SAAU/B,UAAUA,CAACrJ,IAAI,EAAEE,KAAK,EAAA;YACpC,OAAO;cACLF,IAAI,EAAEA,IAAI,CAAC4P,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;cAC5B1P,KAAK,EAAEA,KAAK,CAAC0P,MAAM,CAAC1P,KAAK,CAAC/jB,MAAM,GAAG,CAAC,CAAC,KAAK;UAC3C,GAAA;UACH;UAEM,SAAUitB,YAAYA,CAAC5I,OAAO,EAAA;UAClC,EAAA,OAAOA,OAAO,CAACxkB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;UACvE;UAEM,SAAU+tB,WAAWA,CAACmF,IAAI,EAAEJ,KAAK,EAAEhQ,KAAK,EAAE/C,GAAG,EAAA;UACjDA,EAAAA,GAAG,GAAG,IAAI,CAACuN,OAAO,CAACvN,GAAG,CAAC;UAEvB,EAAA,IAAI2E,QAAQ;UAEZ,EAAA,IAAIwO,IAAI,EAAE;UACRxO,IAAAA,QAAQ,GAAG,GAAG;YAChB,CAAC,MAAM,IAAIoO,KAAK,EAAE;UAChBpO,IAAAA,QAAQ,GAAGoO,KAAK,CAACpO,QAAQ,GAAG,GAAG;UACjC,EAAA,CAAC,MAAM;UACLA,IAAAA,QAAQ,GAAG,EAAE;UACf,EAAA;YAEA,IAAItL,IAAI,GAAG,EAAE;YACb,IAAIvR,KAAK,GAAG,CAAC;UAEb,EAAA,KAAK,IAAIO,CAAC,GAAG,CAAC,EAAEsf,CAAC,GAAG5E,KAAK,CAAC3iB,MAAM,EAAEiI,CAAC,GAAGsf,CAAC,EAAEtf,CAAC,EAAE,EAAE;UAC5C,IAAA,IAAI+a,IAAI,GAAGL,KAAK,CAAC1a,CAAC,CAAC,CAAC+a,IAAI;UACxB;UACA;cACA,IAAI0Q,SAAS,GAAG/Q,KAAK,CAAC1a,CAAC,CAAC,CAACsc,QAAQ,KAAKvB,IAAI;UAC1C,IAAA,IAAI6K,SAAS,GAAGlL,KAAK,CAAC1a,CAAC,CAAC,CAAC4lB,SAAS;cAElC,IAAI8F,UAAU,GAAG9F,SAAS,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE;UAE9CtJ,IAAAA,QAAQ,IAAI,CAACsJ,SAAS,IAAI,EAAE,IAAI7K,IAAI;UAEpC,IAAA,IAAI,CAAC0Q,SAAS,KAAK1Q,IAAI,KAAK,IAAI,IAAIA,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,MAAM,CAAC,EAAE;UACpE,MAAA,IAAI/J,IAAI,CAACjZ,MAAM,GAAG,CAAC,EAAE;UACnB,QAAA,MAAM,IAAIsmB,SAAS,CAAC,gBAAgB,GAAG/B,QAAQ,EAAE;UAAE3E,UAAAA,GAAG,EAAAA;UAAA,SAAE,CAAC;UAC3D,MAAA,CAAC,MAAM,IAAIoD,IAAI,KAAK,IAAI,EAAE;UACxBtb,QAAAA,KAAK,EAAE;UACT,MAAA;UACF,IAAA,CAAC,MAAM;UACLuR,MAAAA,IAAI,CAAC/Z,IAAI,CAAC,EAAA,CAAAklB,MAAA,CAAGuP,UAAU,CAAA,CAAAvP,MAAA,CAAGpB,IAAI,CAAE,CAAC;UACnC,IAAA;UACF,EAAA;UAEA,EAAA,IAAIpL,IAAI,GAAG+a,KAAK,IAAI1Z,IAAI,CAAC5S,KAAK,EAAE;YAEhC,OAAO;UACL/H,IAAAA,IAAI,EAAE,gBAAgB;UACtBuc,IAAAA,IAAI,EAAE0J,QAAQ,CAACpB,UAAU,CAAC,OAAO,CAAC;UAClC4P,IAAAA,IAAI,EAAAA,IAAA;UACJrrB,IAAAA,KAAK,EAAAA,KAAA;UACLkQ,IAAAA,IAAI,EAAAA,IAAA;UACJqB,IAAAA,IAAI,EAAAA,IAAA;cACJ0J,KAAK,EAAE/K,IAAI,GAAEkb,aAAA,EAAElb,IAAI,CAAA,EAAKqB,IAAI,EAAA,IAAA,CAAA,GAAIA,IAAI;UACpCsL,IAAAA,QAAQ,EAAAA,QAAA;UACR3E,IAAAA,GAAG,EAAAA;UACJ,GAAA;UACH;UAEM,SAAU2N,eAAeA,CAACxV,IAAI,EAAEC,MAAM,EAAEC,IAAI,EAAE4L,IAAI,EAAE7R,KAAK,EAAEmb,OAAO,EAAA;UACtE;UACA,EAAA,IAAIyG,UAAU,GAAG/P,IAAI,CAAC4P,MAAM,CAAC,CAAC,CAAC,IAAI5P,IAAI,CAAC4P,MAAM,CAAC,CAAC,CAAC;UAC/CI,IAAAA,OAAO,GAAGD,UAAU,KAAK,GAAG,IAAIA,UAAU,KAAK,GAAG;UAEpD,EAAA,IAAIE,SAAS,GAAG,IAAI,CAAC35B,IAAI,CAAC0pB,IAAI,CAAC;YAC/B,OAAO;UACLvlB,IAAAA,IAAI,EAAEw1B,SAAS,GAAG,WAAW,GAAG,mBAAmB;UACnD/b,IAAAA,IAAI,EAAAA,IAAA;UACJC,IAAAA,MAAM,EAAAA,MAAA;UACNC,IAAAA,IAAI,EAAAA,IAAA;UACJ4b,IAAAA,OAAO,EAAAA,OAAA;UACP7hB,IAAAA,KAAK,EAAAA,KAAA;UACL4N,IAAAA,GAAG,EAAE,IAAI,CAACuN,OAAO,CAACA,OAAO;UAC1B,GAAA;UACH;UAEM,SAAUC,eAAeA,CAAC2G,YAAY,EAAEC,QAAQ,EAAEjQ,KAAK,EAAEoJ,OAAO,EAAA;UACpEmG,EAAAA,aAAa,CAACS,YAAY,EAAEhQ,KAAK,CAAC;UAElCoJ,EAAAA,OAAO,GAAG,IAAI,CAACA,OAAO,CAACA,OAAO,CAAC;UAC/B,EAAA,IAAIjJ,OAAO,GAAG;UACZ5lB,IAAAA,IAAI,EAAE,SAAS;UACf+jB,IAAAA,IAAI,EAAE2R,QAAQ;UACdhiB,IAAAA,KAAK,EAAE,EAAE;UACT4N,IAAAA,GAAG,EAAEuN;UACN,GAAA;YAED,OAAO;UACL7uB,IAAAA,IAAI,EAAE,gBAAgB;cACtByZ,IAAI,EAAEgc,YAAY,CAAChc,IAAI;cACvBC,MAAM,EAAE+b,YAAY,CAAC/b,MAAM;cAC3BC,IAAI,EAAE8b,YAAY,CAAC9b,IAAI;UACvBiM,IAAAA,OAAO,EAAAA,OAAA;UACPD,IAAAA,SAAS,EAAE,EAAE;UACbD,IAAAA,YAAY,EAAE,EAAE;UAChBG,IAAAA,UAAU,EAAE,EAAE;UACdvE,IAAAA,GAAG,EAAEuN;UACN,GAAA;UACH;UAEM,SAAUE,YAAYA,CAC1B4G,SAAS,EACT/P,OAAO,EACPgQ,iBAAiB,EACjBnQ,KAAK,EACLoQ,QAAQ,EACRhH,OAAO,EAAA;UAEP,EAAA,IAAIpJ,KAAK,IAAIA,KAAK,CAAChM,IAAI,EAAE;UACvBub,IAAAA,aAAa,CAACW,SAAS,EAAElQ,KAAK,CAAC;UACjC,EAAA;YAEA,IAAI+P,SAAS,GAAG,IAAI,CAAC35B,IAAI,CAAC85B,SAAS,CAACpQ,IAAI,CAAC;UAEzCK,EAAAA,OAAO,CAAC5L,WAAW,GAAG2b,SAAS,CAAC3b,WAAW;YAE3C,IAAI6E,OAAO,EAAE6G,YAAY;UAEzB,EAAA,IAAIkQ,iBAAiB,EAAE;UACrB,IAAA,IAAIJ,SAAS,EAAE;UACb,MAAA,MAAM,IAAIxN,SAAS,CACjB,uCAAuC,EACvC4N,iBAAiB,CAClB;UACH,IAAA;cAEA,IAAIA,iBAAiB,CAAC5G,KAAK,EAAE;UAC3B4G,MAAAA,iBAAiB,CAAChQ,OAAO,CAAC7B,IAAI,CAAC,CAAC,CAAC,CAAC8B,UAAU,GAAGJ,KAAK,CAAC/R,KAAK;UAC5D,IAAA;cAEAgS,YAAY,GAAGkQ,iBAAiB,CAACliB,KAAK;cACtCmL,OAAO,GAAG+W,iBAAiB,CAAChQ,OAAO;UACrC,EAAA;UAEA,EAAA,IAAIiQ,QAAQ,EAAE;UACZA,IAAAA,QAAQ,GAAGhX,OAAO;UAClBA,IAAAA,OAAO,GAAG+G,OAAO;UACjBA,IAAAA,OAAO,GAAGiQ,QAAQ;UACpB,EAAA;YAEA,OAAO;UACL71B,IAAAA,IAAI,EAAEw1B,SAAS,GAAG,gBAAgB,GAAG,gBAAgB;cACrD/b,IAAI,EAAEkc,SAAS,CAAClc,IAAI;cACpBC,MAAM,EAAEic,SAAS,CAACjc,MAAM;cACxBC,IAAI,EAAEgc,SAAS,CAAChc,IAAI;UACpBiM,IAAAA,OAAO,EAAAA,OAAA;UACP/G,IAAAA,OAAO,EAAAA,OAAA;cACP8G,SAAS,EAAEgQ,SAAS,CAACjiB,KAAK;UAC1BgS,IAAAA,YAAY,EAAAA,YAAA;UACZG,IAAAA,UAAU,EAAEJ,KAAK,IAAIA,KAAK,CAAC/R,KAAK;UAChC4N,IAAAA,GAAG,EAAE,IAAI,CAACuN,OAAO,CAACA,OAAO;UAC1B,GAAA;UACH;UAEM,SAAUH,cAAcA,CAACxR,UAAU,EAAEoE,GAAG,EAAA;UAC5C,EAAA,IAAI,CAACA,GAAG,IAAIpE,UAAU,CAACxb,MAAM,EAAE;UAC7B,IAAA,IAAMo0B,QAAQ,GAAG5Y,UAAU,CAAC,CAAC,CAAC,CAACoE,GAAG;gBAChCyU,OAAO,GAAG7Y,UAAU,CAACA,UAAU,CAACxb,MAAM,GAAG,CAAC,CAAC,CAAC4f,GAAG;UAEjD;cACA,IAAIwU,QAAQ,IAAIC,OAAO,EAAE;UACvBzU,MAAAA,GAAG,GAAG;kBACJb,MAAM,EAAEqV,QAAQ,CAACrV,MAAM;UACvB0H,QAAAA,KAAK,EAAE;UACLlU,UAAAA,IAAI,EAAE6hB,QAAQ,CAAC3N,KAAK,CAAClU,IAAI;UACzBwN,UAAAA,MAAM,EAAEqU,QAAQ,CAAC3N,KAAK,CAAC1G;UACxB,SAAA;UACD2G,QAAAA,GAAG,EAAE;UACHnU,UAAAA,IAAI,EAAE8hB,OAAO,CAAC3N,GAAG,CAACnU,IAAI;UACtBwN,UAAAA,MAAM,EAAEsU,OAAO,CAAC3N,GAAG,CAAC3G;;UAEvB,OAAA;UACH,IAAA;UACF,EAAA;YAEA,OAAO;UACLzhB,IAAAA,IAAI,EAAE,SAAS;UACf+jB,IAAAA,IAAI,EAAE7G,UAAU;UAChBxJ,IAAAA,KAAK,EAAE,EAAE;UACT4N,IAAAA,GAAG,EAAEA;UACN,GAAA;UACH;UAEM,SAAU6N,mBAAmBA,CAAC5J,IAAI,EAAEK,OAAO,EAAEH,KAAK,EAAEoJ,OAAO,EAAA;UAC/DmG,EAAAA,aAAa,CAACzP,IAAI,EAAEE,KAAK,CAAC;YAE1B,OAAO;UACLzlB,IAAAA,IAAI,EAAE,uBAAuB;cAC7BqB,IAAI,EAAEkkB,IAAI,CAAC9L,IAAI;cACfC,MAAM,EAAE6L,IAAI,CAAC7L,MAAM;cACnBC,IAAI,EAAE4L,IAAI,CAAC5L,IAAI;UACfiM,IAAAA,OAAO,EAAAA,OAAA;cACPD,SAAS,EAAEJ,IAAI,CAAC7R,KAAK;UACrBmS,IAAAA,UAAU,EAAEJ,KAAK,IAAIA,KAAK,CAAC/R,KAAK;UAChC4N,IAAAA,GAAG,EAAE,IAAI,CAACuN,OAAO,CAACA,OAAO;UAC1B,GAAA;UACH;;;;;;;;;;;;;;;;UCxOA,IAAImH,WAAW,GAAG,EAAE;UAEpB,KAAK,IAAI5O,MAAM,IAAI6O,OAAO,EAAE;UAC1B,EAAA,IAAIl7B,MAAM,CAAC+C,SAAS,CAACC,cAAc,CAACC,IAAI,CAACi4B,OAAO,EAAE7O,MAAM,CAAC,EAAE;UACzD4O,IAAAA,WAAW,CAAC5O,MAAM,CAAC,GAAG6O,OAAO,CAAC7O,MAAM,CAAC;UACvC,EAAA;UACF;UAEM,SAAU8O,sBAAsBA,CAACzkB,KAAK,EAAErL,OAAO,EAAA;;UACnD;UACA,EAAA,IAAIqL,KAAK,CAACzR,IAAI,KAAK,SAAS,EAAE;UAC5B,IAAA,OAAOyR,KAAK;UACd,EAAA;YAEA2Z,MAAM,CAACwC,EAAE,GAAGoI,WAAW;UAEvB;UACA5K,EAAAA,MAAM,CAACwC,EAAE,CAACiB,OAAO,GAAG,UAAUA,OAAO,EAAA;UACnC,IAAA,OAAO,IAAIoH,cAAsB,CAAC7vB,OAAO,IAAIA,OAAO,CAAC+vB,OAAO,EAAEtH,OAAO,CAAC;YACxE,CAAC;UAED,EAAA,IAAIuH,YAAY;UAEhB,EAAA,IAAI,QAAO,CAAAC,EAAA,GAAAjwB,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAE8oB,MAAM,MAAA,IAAA,IAAAmH,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEjH,MAAM,CAAA,KAAK,UAAU,EAAE;UACjDgH,IAAAA,YAAY,GAAGhwB,OAAO,CAAC8oB,MAAM,CAACE,MAAM;YACtC,CAAC,MAAM,IAAI,CAAA,CAAAkH,EAAA,GAAAlwB,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAE8oB,MAAM,MAAA,IAAA,IAAAoH,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAElH,MAAM,MAAK,MAAM,EAAE;UAC7CgH,IAAAA,YAAY,GAAGG,gBAAgB;UACjC,EAAA,CAAC,MAAM;UACLH,IAAAA,YAAY,GAAG,QAAQ;UACzB,EAAA;UAEA,EAAA,IAAII,UAAU;UAEd,EAAA,IAAI,QAAO,CAAAC,EAAA,GAAArwB,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAE8oB,MAAM,MAAA,IAAA,IAAAuH,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAE9c,IAAI,CAAA,KAAK,UAAU,EAAE;UAC/C6c,IAAAA,UAAU,GAAGpwB,OAAO,CAAC8oB,MAAM,CAACvV,IAAI;UAClC,EAAA,CAAC,MAAM;UACL6c,IAAAA,UAAU,GAAGE,eAAe;UAC9B,EAAA;UAEAtL,EAAAA,MAAM,CAACwC,EAAE,CAACsB,MAAM,GAAG;UACjBE,IAAAA,MAAM,EAAEgH,YAAY;UACpBzc,IAAAA,IAAI,EAAE6c;UACP,GAAA;UAED,EAAA,OAAOpL,MAAM,CAACwE,KAAK,CAACne,KAAK,CAAC;UAC5B;UAEA,SAAS8kB,gBAAgBA,CAACzZ,KAAK,EAAEwE,GAAG,EAAA;YAClC,OAAO;UACLthB,IAAAA,IAAI,EAAE,cAAc;UACpB40B,IAAAA,KAAK,EAAE9X,KAAK;UACZwE,IAAAA,GAAG,EAAAA;UACJ,GAAA;UACH;UAEA,SAASoV,eAAeA,CAAC/c,IAAI,EAAE2H,GAAG,EAAA;YAChC,OAAO;UACLthB,IAAAA,IAAI,EAAE,aAAa;cACnBomB,KAAK,EAAEzM,IAAI,CAACyM,KAAK;UACjB9E,IAAAA,GAAG,EAAAA;UACJ,GAAA;UACH;UAEM,SAAUsO,KAAKA,CAACne,KAAK,EAAErL,OAAO,EAAA;UAClC,EAAA,IAAIsgB,GAAG,GAAGwP,sBAAsB,CAACzkB,KAAK,EAAErL,OAAO,CAAC;UAChD,EAAA,IAAIsN,KAAK,GAAG,IAAIoW,iBAAiB,CAAC1jB,OAAO,CAAC;UAE1C,EAAA,OAAOsN,KAAK,CAACoV,MAAM,CAACpC,GAAG,CAAC;UAC1B;;;;;;;;;;;;;;UCxEA;;;;UAIA,IAAAiQ,aAAA,GAAe;UACfC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,EAAE,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,IAAI;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,EAAE,EAAC,QAAQ;UAACC,EAAAA,GAAG,EAAC,IAAI;UAACC,EAAAA,GAAG,EAAC,IAAI;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACjY,EAAAA,GAAG,EAAC,GAAG;UAACkY,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,EAAE,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,aAAa,EAAC,QAAQ;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACtU,EAAAA,GAAG,EAAC,GAAG;UAACuU,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,WAAW,EAAC,GAAG;UAACC,EAAAA,SAAS,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,SAAS,EAAC,GAAG;UAACC,EAAAA,SAAS,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,UAAU,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,IAAI;UAACC,EAAAA,GAAG,EAAC,IAAI;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,SAAS,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,eAAe,EAAC,GAAG;UAACC,EAAAA,aAAa,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,YAAY,EAAC,GAAG;UAACC,EAAAA,WAAW,EAAC,GAAG;UAACC,EAAAA,aAAa,EAAC,GAAG;UAACC,EAAAA,iBAAiB,EAAC,GAAG;UAACC,EAAAA,iBAAiB,EAAC,GAAG;UAACC,EAAAA,kBAAkB,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAAC3kB,EAAAA,KAAK,EAAC,GAAG;UAAC4kB,EAAAA,GAAG,EAAC,IAAI;UAACC,EAAAA,OAAO,EAAC,IAAI;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,QAAQ,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EA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AAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,OAAO,EAAC,IAAI;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,IAAI;UAACC,EAAAA,KAAK,EAAC,IAAI;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,OAAO,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,IAAI;UAACC,EAAAA,GAAG,EAAC,IAAI;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EA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AK,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,IAAI;UAACC,EAAAA,GAAG,EAAC,IAAI;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,EAAE,EAAC,GAAG;UAACC,EAAAA,EAAE,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,GAAG,EAAC,IAAI;UAACC,EAAAA,GAAG,EAAC,IAAI;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,EAAE,EAAC,GAAG;UAACC,EAAAA,EAAE,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,IAAI,EAAC,IAAI;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,KAAK,EAAC,GAAG;UAACC,EAAAA,IAAI,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG;UAACC,EAAAA,MAAM,EAAC,GAAG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","x_google_ignoreList":[60,61,62,63,64,65,66,67]}
|